mirror of
https://github.com/django/django.git
synced 2025-07-24 05:36:15 +00:00
Fixed #28722 -- Made QuerySet.reverse() affect nulls_first/nulls_last.
This commit is contained in:
parent
6c3104221b
commit
21a3a29dc9
4 changed files with 27 additions and 16 deletions
|
@ -92,24 +92,28 @@ class OrderingTests(TestCase):
|
|||
with self.assertRaisesMessage(ValueError, msg):
|
||||
Article.objects.order_by(F("author").desc(nulls_last=True, nulls_first=True))
|
||||
|
||||
def assertQuerysetEqualReversible(self, queryset, sequence):
|
||||
self.assertSequenceEqual(queryset, sequence)
|
||||
self.assertSequenceEqual(queryset.reverse(), list(reversed(sequence)))
|
||||
|
||||
def test_order_by_nulls_last(self):
|
||||
Article.objects.filter(headline="Article 3").update(author=self.author_1)
|
||||
Article.objects.filter(headline="Article 4").update(author=self.author_2)
|
||||
# asc and desc are chainable with nulls_last.
|
||||
self.assertSequenceEqual(
|
||||
Article.objects.order_by(F("author").desc(nulls_last=True)),
|
||||
self.assertQuerysetEqualReversible(
|
||||
Article.objects.order_by(F("author").desc(nulls_last=True), 'headline'),
|
||||
[self.a4, self.a3, self.a1, self.a2],
|
||||
)
|
||||
self.assertSequenceEqual(
|
||||
Article.objects.order_by(F("author").asc(nulls_last=True)),
|
||||
self.assertQuerysetEqualReversible(
|
||||
Article.objects.order_by(F("author").asc(nulls_last=True), 'headline'),
|
||||
[self.a3, self.a4, self.a1, self.a2],
|
||||
)
|
||||
self.assertSequenceEqual(
|
||||
Article.objects.order_by(Upper("author__name").desc(nulls_last=True)),
|
||||
self.assertQuerysetEqualReversible(
|
||||
Article.objects.order_by(Upper("author__name").desc(nulls_last=True), 'headline'),
|
||||
[self.a4, self.a3, self.a1, self.a2],
|
||||
)
|
||||
self.assertSequenceEqual(
|
||||
Article.objects.order_by(Upper("author__name").asc(nulls_last=True)),
|
||||
self.assertQuerysetEqualReversible(
|
||||
Article.objects.order_by(Upper("author__name").asc(nulls_last=True), 'headline'),
|
||||
[self.a3, self.a4, self.a1, self.a2],
|
||||
)
|
||||
|
||||
|
@ -117,20 +121,20 @@ class OrderingTests(TestCase):
|
|||
Article.objects.filter(headline="Article 3").update(author=self.author_1)
|
||||
Article.objects.filter(headline="Article 4").update(author=self.author_2)
|
||||
# asc and desc are chainable with nulls_first.
|
||||
self.assertSequenceEqual(
|
||||
Article.objects.order_by(F("author").asc(nulls_first=True)),
|
||||
self.assertQuerysetEqualReversible(
|
||||
Article.objects.order_by(F("author").asc(nulls_first=True), 'headline'),
|
||||
[self.a1, self.a2, self.a3, self.a4],
|
||||
)
|
||||
self.assertSequenceEqual(
|
||||
Article.objects.order_by(F("author").desc(nulls_first=True)),
|
||||
self.assertQuerysetEqualReversible(
|
||||
Article.objects.order_by(F("author").desc(nulls_first=True), 'headline'),
|
||||
[self.a1, self.a2, self.a4, self.a3],
|
||||
)
|
||||
self.assertSequenceEqual(
|
||||
Article.objects.order_by(Upper("author__name").asc(nulls_first=True)),
|
||||
self.assertQuerysetEqualReversible(
|
||||
Article.objects.order_by(Upper("author__name").asc(nulls_first=True), 'headline'),
|
||||
[self.a1, self.a2, self.a3, self.a4],
|
||||
)
|
||||
self.assertSequenceEqual(
|
||||
Article.objects.order_by(Upper("author__name").desc(nulls_first=True)),
|
||||
self.assertQuerysetEqualReversible(
|
||||
Article.objects.order_by(Upper("author__name").desc(nulls_first=True), 'headline'),
|
||||
[self.a1, self.a2, self.a4, self.a3],
|
||||
)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue