mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #31094 -- Included columns referenced by subqueries in GROUP BY on aggregations.
Thanks Johannes Hoppe for the report.
Regression in fb3f034f1c.
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
This commit is contained in:
committed by
Mariusz Felisiak
parent
a0f34d8fef
commit
5a4d7285bd
@@ -1172,3 +1172,23 @@ class AggregateTestCase(TestCase):
|
||||
Exists(long_books_qs),
|
||||
).annotate(total=Count('*'))
|
||||
self.assertEqual(dict(has_long_books_breakdown), {True: 2, False: 3})
|
||||
|
||||
def test_aggregation_subquery_annotation_related_field(self):
|
||||
publisher = Publisher.objects.create(name=self.a9.name, num_awards=2)
|
||||
book = Book.objects.create(
|
||||
isbn='159059999', name='Test book.', pages=819, rating=2.5,
|
||||
price=Decimal('14.44'), contact=self.a9, publisher=publisher,
|
||||
pubdate=datetime.date(2019, 12, 6),
|
||||
)
|
||||
book.authors.add(self.a5, self.a6, self.a7)
|
||||
books_qs = Book.objects.annotate(
|
||||
contact_publisher=Subquery(
|
||||
Publisher.objects.filter(
|
||||
pk=OuterRef('publisher'),
|
||||
name=OuterRef('contact__name'),
|
||||
).values('name')[:1],
|
||||
)
|
||||
).filter(
|
||||
contact_publisher__isnull=False,
|
||||
).annotate(count=Count('authors'))
|
||||
self.assertSequenceEqual(books_qs, [book])
|
||||
|
||||
Reference in New Issue
Block a user