Fixed order-then-filter issue

This commit is contained in:
Harry Marr 2010-11-01 00:43:30 +00:00
parent e868f37c60
commit 6b880aa8b3
2 changed files with 21 additions and 1 deletions

View File

@ -431,7 +431,9 @@ class QuerySet(object):
self._cursor_obj.where(self._where_clause)
# apply default ordering
if self._document._meta['ordering']:
if self._ordering:
self._cursor_obj.sort(self._ordering)
elif self._document._meta['ordering']:
self.order_by(*self._document._meta['ordering'])
if self._limit is not None:

View File

@ -1395,6 +1395,24 @@ class QuerySetTest(unittest.TestCase):
Post.drop_collection()
def test_order_then_filter(self):
"""Ensure that ordering still works after filtering.
"""
class Number(Document):
n = IntField()
Number.drop_collection()
n2 = Number.objects.create(n=2)
n1 = Number.objects.create(n=1)
self.assertEqual(list(Number.objects), [n2, n1])
self.assertEqual(list(Number.objects.order_by('n')), [n1, n2])
self.assertEqual(list(Number.objects.order_by('n').filter()), [n1, n2])
Number.drop_collection()
class QTest(unittest.TestCase):
def test_empty_q(self):