From 69c6a6868f0b4137bb293ff4326ecf4681506c37 Mon Sep 17 00:00:00 2001 From: Josh Smeaton Date: Mon, 19 Jan 2015 10:35:10 +1100 Subject: [PATCH] Fixed #24174 -- Fixed extra order by descending --- django/db/models/sql/compiler.py | 6 ++++-- tests/ordering/tests.py | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index ebda3be96f..7944e35d8a 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -261,8 +261,10 @@ class SQLCompiler(object): # on verbatim. table, col = col.split('.', 1) order_by.append(( - OrderBy(RawSQL('%s.%s' % (self.quote_name_unless_alias(table), col), [])), - False)) + OrderBy( + RawSQL('%s.%s' % (self.quote_name_unless_alias(table), col), []), + descending=descending + ), False)) continue if not self.query._extra or col not in self.query._extra: diff --git a/tests/ordering/tests.py b/tests/ordering/tests.py index abb30f43f1..60880b71be 100644 --- a/tests/ordering/tests.py +++ b/tests/ordering/tests.py @@ -166,6 +166,26 @@ class OrderingTests(TestCase): attrgetter("headline") ) + def test_extra_ordering_with_table_name(self): + self.assertQuerysetEqual( + Article.objects.extra(order_by=['ordering_article.headline']), [ + "Article 1", + "Article 2", + "Article 3", + "Article 4", + ], + attrgetter("headline") + ) + self.assertQuerysetEqual( + Article.objects.extra(order_by=['-ordering_article.headline']), [ + "Article 4", + "Article 3", + "Article 2", + "Article 1", + ], + attrgetter("headline") + ) + def test_order_by_pk(self): """ Ensure that 'pk' works as an ordering option in Meta.