diff options
| author | Simon Charette <charette.s@gmail.com> | 2023-11-17 19:42:44 -0500 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-11-18 15:38:04 +0100 |
| commit | 7530cf3900ab98104edcde69e8a2a415e82b345a (patch) | |
| tree | b0b2d30e5f1849be26aa6203453907a17f498111 /django | |
| parent | 594873befbbec13a2d9a048a361757dd3cf178da (diff) | |
Fixed #34975 -- Fixed crash of conditional aggregate() over aggregations.
Adjustments made to solve_lookup_type to defer the resolving of
references for summarized aggregates failed to account for similar
requirements for lookup values which can also reference annotations
through Aggregate.filter.
Regression in b181cae2e3697b2e53b5b67ac67e59f3b05a6f0d.
Refs #25307.
Thanks Sergey Nesterenko for the report.
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/sql/query.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index 4690fd304d..f04b1c4cc3 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -1256,12 +1256,13 @@ class Query(BaseExpression): sql = "(%s)" % sql return sql, params - def resolve_lookup_value(self, value, can_reuse, allow_joins): + def resolve_lookup_value(self, value, can_reuse, allow_joins, summarize=False): if hasattr(value, "resolve_expression"): value = value.resolve_expression( self, reuse=can_reuse, allow_joins=allow_joins, + summarize=summarize, ) elif isinstance(value, (list, tuple)): # The items of the iterable may be expressions and therefore need @@ -1487,7 +1488,7 @@ class Query(BaseExpression): raise FieldError("Joined field references are not permitted in this query") pre_joins = self.alias_refcount.copy() - value = self.resolve_lookup_value(value, can_reuse, allow_joins) + value = self.resolve_lookup_value(value, can_reuse, allow_joins, summarize) used_joins = { k for k, v in self.alias_refcount.items() if v > pre_joins.get(k, 0) } |
