diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-01-15 09:32:42 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-15 09:32:42 +0100 |
| commit | 59b4e99dd00b9c36d56055b889f96885995e4240 (patch) | |
| tree | 92021fcc157ff675d11bc6d7b9837884609e5e7f /django/db/models/sql/query.py | |
| parent | 63e6ee1f996e16a1a6238fed16fdb28bce156bc6 (diff) | |
Refs #31136 -- Made QuerySet.values()/values_list() group only by selected annotation.
Regression in 0f843fdd5b9b2f2307148465cd60f4e1b2befbb4.
Diffstat (limited to 'django/db/models/sql/query.py')
| -rw-r--r-- | django/db/models/sql/query.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index f96a0a6e2d..78c4f47b5b 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -2093,13 +2093,6 @@ class Query(BaseExpression): self.clear_deferred_loading() self.clear_select_fields() - if self.group_by is True: - self.add_fields((f.attname for f in self.model._meta.concrete_fields), False) - # Disable GROUP BY aliases to avoid orphaning references to the - # SELECT clause which is about to be cleared. - self.set_group_by(allow_aliases=False) - self.clear_select_fields() - if fields: field_names = [] extra_names = [] @@ -2121,6 +2114,14 @@ class Query(BaseExpression): self.set_annotation_mask(annotation_names) else: field_names = [f.attname for f in self.model._meta.concrete_fields] + # Selected annotations must be known before setting the GROUP BY + # clause. + if self.group_by is True: + self.add_fields((f.attname for f in self.model._meta.concrete_fields), False) + # Disable GROUP BY aliases to avoid orphaning references to the + # SELECT clause which is about to be cleared. + self.set_group_by(allow_aliases=False) + self.clear_select_fields() self.values_select = tuple(field_names) self.add_fields(field_names, True) |
