summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLaurent Tramoy <laurenttramoy@gmail.com>2020-05-26 09:11:11 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-05-26 21:14:45 +0200
commit2aac176e86204785f0f2ec4838049d8fed70870e (patch)
tree812f2d026f8b528567df9e7579f2e1c9d492875c /tests
parent51ad767d0b31fcaa0e4ffefa2938b9184c59928a (diff)
Fixed #31614 -- Fixed aliases ordering by OrderBy() expressions of combined queryset.
Diffstat (limited to 'tests')
-rw-r--r--tests/queries/test_qs_combinators.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/queries/test_qs_combinators.py b/tests/queries/test_qs_combinators.py
index c93ce80300..8e2e14403d 100644
--- a/tests/queries/test_qs_combinators.py
+++ b/tests/queries/test_qs_combinators.py
@@ -123,6 +123,21 @@ class QuerySetSetOperationTests(TestCase):
qs2 = Number.objects.filter(num__gte=2, num__lte=3)
self.assertNumbersEqual(qs1.union(qs2).order_by(F('num').desc()), [3, 2, 1, 0])
+ def test_ordering_by_f_expression_and_alias(self):
+ qs1 = Number.objects.filter(num__lte=1).values(alias=F('other_num'))
+ qs2 = Number.objects.filter(num__gte=2, num__lte=3).values(alias=F('other_num'))
+ self.assertQuerysetEqual(
+ qs1.union(qs2).order_by(F('alias').desc()),
+ [10, 9, 8, 7],
+ operator.itemgetter('alias'),
+ )
+ Number.objects.create(num=-1)
+ self.assertQuerysetEqual(
+ qs1.union(qs2).order_by(F('alias').desc(nulls_last=True)),
+ [10, 9, 8, 7, None],
+ operator.itemgetter('alias'),
+ )
+
def test_union_with_values(self):
ReservedName.objects.create(name='a', order=2)
qs1 = ReservedName.objects.all()