diff options
author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-01-15 09:32:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-15 09:32:42 +0100 |
commit | 59b4e99dd00b9c36d56055b889f96885995e4240 (patch) | |
tree | 92021fcc157ff675d11bc6d7b9837884609e5e7f /tests/aggregation | |
parent | 63e6ee1f996e16a1a6238fed16fdb28bce156bc6 (diff) | |
download | django-59b4e99dd00b9c36d56055b889f96885995e4240.tar.gz |
Refs #31136 -- Made QuerySet.values()/values_list() group only by selected annotation.
Regression in 0f843fdd5b9b2f2307148465cd60f4e1b2befbb4.
Diffstat (limited to 'tests/aggregation')
-rw-r--r-- | tests/aggregation/tests.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/aggregation/tests.py b/tests/aggregation/tests.py index f523b3ca35..06c4cc7ccb 100644 --- a/tests/aggregation/tests.py +++ b/tests/aggregation/tests.py @@ -1165,6 +1165,31 @@ class AggregateTestCase(TestCase): 'Sams', ]) + def test_aggregation_subquery_annotation_values(self): + """ + Subquery annotations and external aliases are excluded from the GROUP + BY if they are not selected. + """ + books_qs = Book.objects.annotate( + first_author_the_same_age=Subquery( + Author.objects.filter( + age=OuterRef('contact__friends__age'), + ).order_by('age').values('id')[:1], + ) + ).filter( + publisher=self.p1, + first_author_the_same_age__isnull=False, + ).annotate( + min_age=Min('contact__friends__age'), + ).values('name', 'min_age').order_by('name') + self.assertEqual(list(books_qs), [ + {'name': 'Practical Django Projects', 'min_age': 34}, + { + 'name': 'The Definitive Guide to Django: Web Development Done Right', + 'min_age': 29, + }, + ]) + @skipUnlessDBFeature('supports_subqueries_in_group_by') def test_group_by_subquery_annotation(self): """ |