summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-10-23 13:34:03 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-10-23 13:34:03 +0000
commit3940277792a33774bb17c622cdd753deb3ee17c6 (patch)
treeb866a79bc647b82d689d5503f7e00ca320c0a572
parent5e1a54a3a8285912fed02b2121b53d13fa1061fd (diff)
queryset-refactor: Fixed an order_by() regression. It must override any
existing ordering, not append to it. git-svn-id: http://code.djangoproject.com/svn/django/branches/queryset-refactor@6599 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/db/models/query.py1
-rw-r--r--tests/modeltests/ordering/models.py7
2 files changed, 8 insertions, 0 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py
index c36a68f404..6a6fd82b18 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -303,6 +303,7 @@ class _QuerySet(object):
assert self.query.can_filter(), \
"Cannot reorder a query once a slice has been taken."
obj = self._clone()
+ obj.query.clear_ordering()
obj.query.add_ordering(*field_names)
return obj
diff --git a/tests/modeltests/ordering/models.py b/tests/modeltests/ordering/models.py
index 3e651d4ee7..d3eb7f0dc0 100644
--- a/tests/modeltests/ordering/models.py
+++ b/tests/modeltests/ordering/models.py
@@ -64,4 +64,11 @@ __test__ = {'API_TESTS':"""
# don't know what order the output will be in.
>>> Article.objects.order_by('?')
[...]
+
+# order_by() overrides any previous ordering, so only the last one has any
+# effect.
+>>> Article.objects.order_by('id')
+[<Article: Article 1>, <Article: Article 2>, <Article: Article 3>, <Article: Article 4>]
+>>> Article.objects.order_by('id').order_by('-headline')
+[<Article: Article 4>, <Article: Article 3>, <Article: Article 2>, <Article: Article 1>]
"""}