diff options
| author | Adam Johnson <me@adamj.eu> | 2025-05-21 15:16:12 +0100 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-05-23 15:17:20 +0200 |
| commit | b8e5a8a9a2a767f584cbe89a878a42363706f939 (patch) | |
| tree | 3e6b88266fe8abddfe29a449748b5a3ec864d501 /tests/aggregation | |
| parent | d2732c30af28381f5a2ff1b08f754eeb7a6dfeca (diff) | |
Fixed #36404 -- Fixed Aggregate.filter using OuterRef.
Regression in a76035e925ff4e6d8676c65cb135c74b993b1039.
Thank you to Simon Charette for the review.
co-authored-by: Simon Charette <charette.s@gmail.com>
Diffstat (limited to 'tests/aggregation')
| -rw-r--r-- | tests/aggregation/test_filter_argument.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/aggregation/test_filter_argument.py b/tests/aggregation/test_filter_argument.py index 75835edb0b..1a17703a86 100644 --- a/tests/aggregation/test_filter_argument.py +++ b/tests/aggregation/test_filter_argument.py @@ -84,6 +84,10 @@ class FilteredAggregateTests(TestCase): Author.objects.aggregate(age=agg)["age"], expected_result ) + def test_empty_filtered_aggregates(self): + agg = Count("pk", filter=Q()) + self.assertEqual(Author.objects.aggregate(count=agg)["count"], 3) + def test_double_filtered_aggregates(self): agg = Sum("age", filter=Q(Q(name="test2") & ~Q(name="test"))) self.assertEqual(Author.objects.aggregate(age=agg)["age"], 60) @@ -182,6 +186,23 @@ class FilteredAggregateTests(TestCase): ) self.assertEqual(aggregate, {"max_rating": 4.5}) + def test_filtered_aggregrate_ref_in_subquery_annotation(self): + aggs = ( + Author.objects.annotate( + count=Subquery( + Book.objects.annotate( + weird_count=Count( + "pk", + filter=Q(pages=OuterRef("age")), + ) + ).values("weird_count")[:1] + ), + ) + .order_by("pk") + .aggregate(sum=Sum("count")) + ) + self.assertEqual(aggs["sum"], 0) + def test_filtered_aggregate_on_exists(self): aggregate = Book.objects.values("publisher").aggregate( max_rating=Max( |
