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
... and the QuerySet is free to override its own internal cache
anytime it wants. You know that `x[3]` will refer to the same
database record, but there's no guarantee that it will be the same
Python object.
--
Javier
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django...@googlegroups.com.
To unsubscribe from this group, send email to django-users...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
x = list(MyModel.objects.all())
x[3].some_field = "new value"
x[3].save()
Cheers
Tom