summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/db/models/query.py8
-rw-r--r--tests/regressiontests/aggregation_regress/tests.py7
2 files changed, 15 insertions, 0 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py
index 9c3aeaa8d3..6a6a82968f 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -1132,6 +1132,14 @@ class EmptyQuerySet(QuerySet):
"""
return 0
+ def aggregate(self, *args, **kwargs):
+ """
+ Return a dict mapping the aggregate names to None
+ """
+ for arg in args:
+ kwargs[arg.default_alias] = arg
+ return dict([(key, None) for key in kwargs])
+
# EmptyQuerySet is always an empty result in where-clauses (and similar
# situations).
value_annotation = False
diff --git a/tests/regressiontests/aggregation_regress/tests.py b/tests/regressiontests/aggregation_regress/tests.py
index 15692b6422..49e1e611e9 100644
--- a/tests/regressiontests/aggregation_regress/tests.py
+++ b/tests/regressiontests/aggregation_regress/tests.py
@@ -662,6 +662,13 @@ class AggregationTests(TestCase):
{"pk__count": None}
)
+ def test_none_call_before_aggregate(self):
+ # Regression for #11789
+ self.assertEqual(
+ Author.objects.none().aggregate(Avg('age')),
+ {'age__avg': None}
+ )
+
def test_annotate_and_join(self):
self.assertEqual(
Author.objects.annotate(c=Count("friends__name")).exclude(friends__name="Joe").count(),