diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-07-09 11:55:03 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-09 11:55:03 +0200 |
| commit | 8a6df55f2dd5131282084a4edfd48f63fbf8c69a (patch) | |
| tree | 23de080c671dfb1a20dccbdef69c5994d8815a90 /django | |
| parent | 1d8256719eecb724476e6cb8d63cfebf6ba1a3cc (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.py | 7 |
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) |
