Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #10425 -- Corrected the interaction of .count() with .annotate(…

…) when .values() is also involved. Thanks to kmassey for the report.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@10053 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 84ce18fc9bbb8a7debd8904f746ae8c57844d291 1 parent 83c1572
Russell Keith-Magee freakboy3742 authored
3  django/db/models/sql/query.py
View
@@ -329,7 +329,7 @@ def get_count(self):
Performs a COUNT() query using the current filter constraints.
"""
obj = self.clone()
- if len(self.select) > 1:
+ if len(self.select) > 1 or self.aggregate_select:
# If a select clause exists, then the query has already started to
# specify the columns that are to be returned.
# In this case, we need to use a subquery to evaluate the count.
@@ -1950,6 +1950,7 @@ def add_count_column(self):
# Clear out the select cache to reflect the new unmasked aggregates.
self.aggregates = {None: count}
self.set_aggregate_mask(None)
+ self.group_by = None
def add_select_related(self, fields):
"""
7 tests/regressiontests/aggregation_regress/models.py
View
@@ -252,6 +252,13 @@ class Clues(models.Model):
>>> [int(x['sheets']) for x in qs]
[150, 175, 224, 264, 473, 566]
+# Regression for 10425 - annotations don't get in the way of a count() clause
+>>> Book.objects.values('publisher').annotate(Count('publisher')).count()
+4
+
+>>> Book.objects.annotate(Count('publisher')).values('publisher').count()
+6
+
"""
}
Please sign in to comment.
Something went wrong with that request. Please try again.