Fixed #7759 -- Fixed QuerySet.count() when the results cache was only partially
populated. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7938 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
57bb10e6c4
commit
52fdedba48
|
@ -280,11 +280,10 @@ class QuerySet(object):
|
||||||
Performs a SELECT COUNT() and returns the number of records as an
|
Performs a SELECT COUNT() and returns the number of records as an
|
||||||
integer.
|
integer.
|
||||||
|
|
||||||
If the QuerySet is already cached (i.e. self._result_cache is set) this
|
If the QuerySet is already fully cached this simply returns the length
|
||||||
simply returns the length of the cached results set to avoid multiple
|
of the cached results set to avoid multiple SELECT COUNT(*) calls.
|
||||||
SELECT COUNT(*) calls.
|
|
||||||
"""
|
"""
|
||||||
if self._result_cache is not None:
|
if self._result_cache is not None and not self._iter:
|
||||||
return len(self._result_cache)
|
return len(self._result_cache)
|
||||||
|
|
||||||
return self.query.get_count()
|
return self.query.get_count()
|
||||||
|
|
|
@ -830,5 +830,13 @@ another cursor.
|
||||||
... obj.save()
|
... obj.save()
|
||||||
... if i > 10: break
|
... if i > 10: break
|
||||||
|
|
||||||
|
Bug #7759 -- count should work with a partially read result set.
|
||||||
|
>>> count = Number.objects.count()
|
||||||
|
>>> qs = Number.objects.all()
|
||||||
|
>>> for obj in qs:
|
||||||
|
... qs.count() == count
|
||||||
|
... break
|
||||||
|
True
|
||||||
|
|
||||||
"""}
|
"""}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue