diff options
| author | Simon Charette <charette.s@gmail.com> | 2023-02-17 20:38:08 -0500 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-02-20 05:54:25 +0100 |
| commit | 278881e37619278789942513916acafaa88d26f3 (patch) | |
| tree | 5d63251a99189484b754931b0f12e97e52ff600b /tests/ordering | |
| parent | f91e085c3054240dbb581c1db9b4a9063c26525c (diff) | |
Fixed #34346 -- Ordered selected expressions by position.
Used the same approach as for #34176 by using selected expressions
position to prevent ambiguous aliases in collisions.
Thanks henribru for the report.
Regression in 04518e310d4552ff7595a34f5a7f93487d78a406.
Diffstat (limited to 'tests/ordering')
| -rw-r--r-- | tests/ordering/tests.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/ordering/tests.py b/tests/ordering/tests.py index 79e1714ab6..7ff38acc4a 100644 --- a/tests/ordering/tests.py +++ b/tests/ordering/tests.py @@ -8,6 +8,7 @@ from django.db.models import ( DateTimeField, F, Max, + OrderBy, OuterRef, Subquery, Value, @@ -619,3 +620,21 @@ class OrderingTests(TestCase): ), Author.objects.order_by(Length(Upper("name"))), ) + + def test_ordering_select_related_collision(self): + self.assertEqual( + Article.objects.select_related("author") + .annotate(name=Upper("author__name")) + .filter(pk=self.a1.pk) + .order_by(OrderBy(F("name"))) + .first(), + self.a1, + ) + self.assertEqual( + Article.objects.select_related("author") + .annotate(name=Upper("author__name")) + .filter(pk=self.a1.pk) + .order_by("name") + .first(), + self.a1, + ) |
