summaryrefslogtreecommitdiff
path: root/tests/ordering
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ordering')
-rw-r--r--tests/ordering/models.py6
-rw-r--r--tests/ordering/tests.py12
2 files changed, 17 insertions, 1 deletions
diff --git a/tests/ordering/models.py b/tests/ordering/models.py
index d3024f5fc0..85e8c59bb6 100644
--- a/tests/ordering/models.py
+++ b/tests/ordering/models.py
@@ -42,6 +42,12 @@ class OrderedByAuthorArticle(Article):
ordering = ('author', 'second_author')
+class OrderedByFArticle(Article):
+ class Meta:
+ proxy = True
+ ordering = (models.F('author').asc(nulls_first=True), 'id')
+
+
class Reference(models.Model):
article = models.ForeignKey(OrderedByAuthorArticle, models.CASCADE)
diff --git a/tests/ordering/tests.py b/tests/ordering/tests.py
index ff749331b9..dbc924b06b 100644
--- a/tests/ordering/tests.py
+++ b/tests/ordering/tests.py
@@ -5,7 +5,7 @@ from django.db.models import F
from django.db.models.functions import Upper
from django.test import TestCase
-from .models import Article, Author, Reference
+from .models import Article, Author, OrderedByFArticle, Reference
class OrderingTests(TestCase):
@@ -368,3 +368,13 @@ class OrderingTests(TestCase):
r1 = Reference.objects.create(article_id=self.a1.pk)
r2 = Reference.objects.create(article_id=self.a2.pk)
self.assertSequenceEqual(Reference.objects.all(), [r2, r1])
+
+ def test_default_ordering_by_f_expression(self):
+ """F expressions can be used in Meta.ordering."""
+ articles = OrderedByFArticle.objects.all()
+ articles.filter(headline='Article 2').update(author=self.author_2)
+ articles.filter(headline='Article 3').update(author=self.author_1)
+ self.assertQuerysetEqual(
+ articles, ['Article 1', 'Article 4', 'Article 3', 'Article 2'],
+ attrgetter('headline')
+ )