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:
Malcolm Tredinnick 2008-07-16 23:17:29 +00:00
parent 57bb10e6c4
commit 52fdedba48
2 changed files with 11 additions and 4 deletions

View File

@ -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()

View File

@ -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
"""} """}