On Thu, Aug 1, 2013 at 10:44 AM, Loic Bistuer <[email protected]> wrote: > On Aug 1, 2013, at 4:05 PM, Tom Evans <[email protected]> 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-developers. For more options, visit https://groups.google.com/groups/opt_out.
