summaryrefslogtreecommitdiff
path: root/tests/ordering
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2023-02-17 20:38:08 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-02-20 05:54:25 +0100
commit278881e37619278789942513916acafaa88d26f3 (patch)
tree5d63251a99189484b754931b0f12e97e52ff600b /tests/ordering
parentf91e085c3054240dbb581c1db9b4a9063c26525c (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.py19
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,
+ )