diff options
| author | Adam Johnson <me@adamj.eu> | 2025-05-21 16:16:12 +0200 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-05-23 15:19:50 +0200 |
| commit | c29e3092fdb1136f0945ce2be8f14c3853d6c8da (patch) | |
| tree | b560a4fdd88beef2513989811ace61de066971d8 /tests | |
| parent | bd873e84bef33db5bfca97471564934d9cbda0dc (diff) | |
[5.2.x] 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>
Backport of b8e5a8a9a2a767f584cbe89a878a42363706f939 from main.
Diffstat (limited to 'tests')
| -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( |
