On Fri, Oct 7, 2011 at 10:30 AM, Chris Seberino <cseber...@gmail.com> wrote: > > I've noticed that this doesn't often work in Django shell... > > x = MyModel.objects.all() > x[3].some_field = "new value" > x[3].save() > > Rather, I must often do this... > > temp = x[3] > temp.some_field = "new value" > temp.save() > > *Sometimes* the first works and I don't know why.
This is because `MyModel.objects.all()` isn't a list; it's a QuerySet. That is, `MyModel.objects.all()` *doesn't* hit the database until you say `x[3]`, at which point Django performs a query with a LIMIT and OFFSET to just select that 3rd item. The entire list is never fetched. See https://docs.djangoproject.com/en/dev/ref/models/querysets/#when-querysets-are-evaluated for more details. Jacob -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.