summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThodoris Sotiropoulos <theosotr@aueb.gr>2020-06-03 00:14:01 +0300
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-06-03 07:53:27 +0200
commitfdd2b01e8e12857aad2219a46a41bd9051ec8f8d (patch)
tree05b599fb6604db7b7fff1a3cc70c9ecf7da779b1
parent52784a83ce8381636b50723614f914705d0781ec (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.py3
-rw-r--r--tests/expressions/tests.py10
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])