mirror of https://github.com/django/django.git
Fixed #34024 -- Fixed crash when aggregating querysets with Q objects annotations.
This reverts b64db05b9c
.
It was reasonable to assume it was unnecessary code as there were
no failing tests upon its removal. This commit adds the necessary
regression tests for the failing condition identified in #34024
alongside the original tests added in the PR for which
WhereNode.is_summary was introduced.
This commit is contained in:
parent
37a13cc92d
commit
1674c70525
|
@ -244,6 +244,10 @@ class WhereNode(tree.Node):
|
||||||
def contains_over_clause(self):
|
def contains_over_clause(self):
|
||||||
return self._contains_over_clause(self)
|
return self._contains_over_clause(self)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_summary(self):
|
||||||
|
return any(child.is_summary for child in self.children)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _resolve_leaf(expr, query, *args, **kwargs):
|
def _resolve_leaf(expr, query, *args, **kwargs):
|
||||||
if hasattr(expr, "resolve_expression"):
|
if hasattr(expr, "resolve_expression"):
|
||||||
|
|
|
@ -554,6 +554,9 @@ class AggregationTests(TestCase):
|
||||||
325,
|
325,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_q_annotation_aggregate(self):
|
||||||
|
self.assertEqual(Book.objects.annotate(has_pk=Q(pk__isnull=False)).count(), 6)
|
||||||
|
|
||||||
def test_decimal_aggregate_annotation_filter(self):
|
def test_decimal_aggregate_annotation_filter(self):
|
||||||
"""
|
"""
|
||||||
Filtering on an aggregate annotation with Decimal values should work.
|
Filtering on an aggregate annotation with Decimal values should work.
|
||||||
|
|
Loading…
Reference in New Issue