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.

Reply via email to