Answer the question
In order to leave comments, you need to log in
What is the difference between queryset and list?
ads = Ads.objects.all()
for ad in ads[:10]
pass
ads = ads[:10]
for ad in ads:
pass
Answer the question
In order to leave comments, you need to log in
Of course, it's different - after all, this is not a list.
Let's see how it works:
https://github.com/django/django/blob/master/djang...
def __getitem__(self, k):
if not isinstance(k, (slice,) + six.integer_types):
raise TypeError
assert ((not isinstance(k, slice) and (k >= 0)) or
(isinstance(k, slice) and (k.start is None or k.start >= 0) and
(k.stop is None or k.stop >= 0))), \
"Negative indexing is not supported."
if self._result_cache is not None:
return self._result_cache[k]
if isinstance(k, slice):
qs = self._clone()
if k.start is not None:
start = int(k.start)
else:
start = None
if k.stop is not None:
stop = int(k.stop)
else:
stop = None
qs.query.set_limits(start, stop)
return list(qs)[::k.step] if k.step else qs
qs = self._clone()
qs.query.set_limits(k, k + 1)
return list(qs)[0]
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question