On Thu, Aug 1, 2013 at 10:44 AM, Loic Bistuer <loic.bist...@sixmedia.com> wrote: > On Aug 1, 2013, at 4:05 PM, Tom Evans <tevans...@googlemail.com> wrote: > >> qs = ... >> print len(qs) >> print qs[0] >> print qs[-1] >> print qs[0] >> >> How many queries for this? > > Just one and "qs[-1]" will return the last element of the cached result. > > I'm not trying to be pedantic, I'm just pointing out that a queryset becomes > a different beast once it has been evaluated; it's basically a simple list of > cached result.
Yes you are right, I was mistaken in thinking that indexing would evaluate the queryset if not evaluated - I think it should tbh, equating qs[10] to either qs[10:11].get() or object_cache[10] does not seem right, but impossible to change existing accepted behaviour. I do not like that the behaviour of qs[10] changes whether the qs is evaluated or not, or that iterating through a queryset by index could be woefully slow unless the developer explicitly evaluates the queryset beforehand - and if you're a developer who thinks that it is right to iterate through a queryset using an index, you probably would not be aware of the need to evaluate it first. Cheers Tom -- You received this message because you are subscribed to the Google Groups "Django developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To post to this group, send email to django-developers@googlegroups.com. Visit this group at http://groups.google.com/group/django-developers. For more options, visit https://groups.google.com/groups/opt_out.