diff options
| author | Thodoris Sotiropoulos <theosotr@aueb.gr> | 2020-06-03 00:14:01 +0300 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-06-03 07:53:27 +0200 |
| commit | fdd2b01e8e12857aad2219a46a41bd9051ec8f8d (patch) | |
| tree | 05b599fb6604db7b7fff1a3cc70c9ecf7da779b1 | |
| parent | 52784a83ce8381636b50723614f914705d0781ec (diff) | |
[3.1.x] Fixed #31651 -- Made ExpressionWrapper use grouping columns from wrapped expression.
Backport of df32fd42b84cc6dbba173201f244491b0d154a63 from master
| -rw-r--r-- | django/db/models/expressions.py | 3 | ||||
| -rw-r--r-- | tests/expressions/tests.py | 10 |
2 files changed, 13 insertions, 0 deletions
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py index 89332699d5..d728cab049 100644 --- a/django/db/models/expressions.py +++ b/django/db/models/expressions.py @@ -863,6 +863,9 @@ class ExpressionWrapper(Expression): def get_source_expressions(self): return [self.expression] + def get_group_by_cols(self, alias=None): + return self.expression.get_group_by_cols(alias=alias) + def as_sql(self, compiler, connection): return self.expression.as_sql(compiler, connection) diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index 72bca4f205..57e4c8ebc7 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -1828,3 +1828,13 @@ class CombinableTests(SimpleTestCase): def test_reversed_or(self): with self.assertRaisesMessage(NotImplementedError, self.bitwise_msg): object() | Combinable() + + +class ExpressionWrapperTests(SimpleTestCase): + def test_empty_group_by(self): + expr = ExpressionWrapper(Value(3), output_field=IntegerField()) + self.assertEqual(expr.get_group_by_cols(alias=None), []) + + def test_non_empty_group_by(self): + expr = ExpressionWrapper(Lower(Value('f')), output_field=IntegerField()) + self.assertEqual(expr.get_group_by_cols(alias=None), [expr.expression]) |
