|
@@ -14,7 +14,16 @@ from django.db.models import (
|
|
|
from django.db.models.functions import Upper
|
|
|
from django.test import TestCase
|
|
|
|
|
|
-from .models import Article, Author, ChildArticle, OrderedByFArticle, Reference
|
|
|
+from .models import (
|
|
|
+ Article,
|
|
|
+ Author,
|
|
|
+ ChildArticle,
|
|
|
+ OrderedByExpression,
|
|
|
+ OrderedByExpressionChild,
|
|
|
+ OrderedByExpressionGrandChild,
|
|
|
+ OrderedByFArticle,
|
|
|
+ Reference,
|
|
|
+)
|
|
|
|
|
|
|
|
|
class OrderingTests(TestCase):
|
|
@@ -550,3 +559,30 @@ class OrderingTests(TestCase):
|
|
|
{"author": self.author_2.pk, "count": 1},
|
|
|
],
|
|
|
)
|
|
|
+
|
|
|
+ def test_order_by_parent_fk_with_expression_in_default_ordering(self):
|
|
|
+ p3 = OrderedByExpression.objects.create(name="oBJ 3")
|
|
|
+ p2 = OrderedByExpression.objects.create(name="OBJ 2")
|
|
|
+ p1 = OrderedByExpression.objects.create(name="obj 1")
|
|
|
+ c3 = OrderedByExpressionChild.objects.create(parent=p3)
|
|
|
+ c2 = OrderedByExpressionChild.objects.create(parent=p2)
|
|
|
+ c1 = OrderedByExpressionChild.objects.create(parent=p1)
|
|
|
+ self.assertSequenceEqual(
|
|
|
+ OrderedByExpressionChild.objects.order_by("parent"),
|
|
|
+ [c1, c2, c3],
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_order_by_grandparent_fk_with_expression_in_default_ordering(self):
|
|
|
+ p3 = OrderedByExpression.objects.create(name="oBJ 3")
|
|
|
+ p2 = OrderedByExpression.objects.create(name="OBJ 2")
|
|
|
+ p1 = OrderedByExpression.objects.create(name="obj 1")
|
|
|
+ c3 = OrderedByExpressionChild.objects.create(parent=p3)
|
|
|
+ c2 = OrderedByExpressionChild.objects.create(parent=p2)
|
|
|
+ c1 = OrderedByExpressionChild.objects.create(parent=p1)
|
|
|
+ g3 = OrderedByExpressionGrandChild.objects.create(parent=c3)
|
|
|
+ g2 = OrderedByExpressionGrandChild.objects.create(parent=c2)
|
|
|
+ g1 = OrderedByExpressionGrandChild.objects.create(parent=c1)
|
|
|
+ self.assertSequenceEqual(
|
|
|
+ OrderedByExpressionGrandChild.objects.order_by("parent"),
|
|
|
+ [g1, g2, g3],
|
|
|
+ )
|