summaryrefslogtreecommitdiff
path: root/django/db/models/sql/query.py
diff options
context:
space:
mode:
authorChristian Klus <christianklus@gmail.com>2020-10-27 13:13:10 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-10-29 11:30:53 +0100
commitab951d242e3de232c7fc9a2f6facfd6aa95f5fe2 (patch)
tree466e3933ec79e4629c5b58ab5594d8eb9112de54 /django/db/models/sql/query.py
parent62f6ab2c4a2bbf1b5354bca268dcd43be8537785 (diff)
[3.1.x] Fixed #32152 -- Fixed grouping by subquery aliases.
Regression in 42c08ee46539ef44f8658ebb1cbefb408e0d03fe. Thanks Simon Charette for the review. Backport of 4ac2d4fa42e1659f328c35b6b8d4761b3419c11a from master
Diffstat (limited to 'django/db/models/sql/query.py')
-rw-r--r--django/db/models/sql/query.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index 7acef7f654..7a16d4889a 100644
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -2148,8 +2148,10 @@ class Query(BaseExpression):
field_names.append(f)
self.set_extra_mask(extra_names)
self.set_annotation_mask(annotation_names)
+ selected = frozenset(field_names + extra_names + annotation_names)
else:
field_names = [f.attname for f in self.model._meta.concrete_fields]
+ selected = frozenset(field_names)
# Selected annotations must be known before setting the GROUP BY
# clause.
if self.group_by is True:
@@ -2163,7 +2165,7 @@ class Query(BaseExpression):
# the selected fields anymore.
group_by = []
for expr in self.group_by:
- if isinstance(expr, Ref) and expr.refs not in field_names:
+ if isinstance(expr, Ref) and expr.refs not in selected:
expr = self.annotations[expr.refs]
group_by.append(expr)
self.group_by = tuple(group_by)