summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2020-07-09 11:55:03 +0200
committerGitHub <noreply@github.com>2020-07-09 11:55:03 +0200
commit8a6df55f2dd5131282084a4edfd48f63fbf8c69a (patch)
tree23de080c671dfb1a20dccbdef69c5994d8815a90 /django
parent1d8256719eecb724476e6cb8d63cfebf6ba1a3cc (diff)
Fixed #31773 -- Fixed preserving output_field in ExpressionWrapper for combined expressions.
Thanks Thodoris Sotiropoulos for the report and Simon Charette for the implementation idea. Regression in df32fd42b84cc6dbba173201f244491b0d154a63.
Diffstat (limited to 'django')
-rw-r--r--django/db/models/expressions.py7
1 files changed, 3 insertions, 4 deletions
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py
index efc7dbc7e6..07e1641dc1 100644
--- a/django/db/models/expressions.py
+++ b/django/db/models/expressions.py
@@ -858,9 +858,6 @@ class ExpressionWrapper(Expression):
def __init__(self, expression, output_field):
super().__init__(output_field=output_field)
- if getattr(expression, '_output_field_or_none', True) is None:
- expression = expression.copy()
- expression.output_field = output_field
self.expression = expression
def set_source_expressions(self, exprs):
@@ -870,7 +867,9 @@ class ExpressionWrapper(Expression):
return [self.expression]
def get_group_by_cols(self, alias=None):
- return self.expression.get_group_by_cols(alias=alias)
+ expression = self.expression.copy()
+ expression.output_field = self.output_field
+ return expression.get_group_by_cols(alias=alias)
def as_sql(self, compiler, connection):
return self.expression.as_sql(compiler, connection)