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 06:22:18 +0100 |
| commit | aab25a69dd09e6717ff86175ff62c29b847a7791 (patch) | |
| tree | ffecc4f2f9d2415f0206b7f8183522f8fd74bf56 /tests/ordering | |
| parent | 312d0f88b4ba47278f53f37ee2735309eda3e913 (diff) | |
[4.2.x] 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.
Backport of 278881e37619278789942513916acafaa88d26f3 from main
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, + ) |
