diff --git a/docs/changelog.rst b/docs/changelog.rst index d521c010..c512eca0 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -6,6 +6,7 @@ Changes in 0.10.1 - DEV ======================= - Fix infinite recursion with CASCADE delete rules under specific conditions. #1046 - Fix CachedReferenceField bug when loading cached docs as DBRef but failing to save them. #1047 +- Fix ignored chained options #842 Changes in 0.10.0 ================= diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index 8db8351f..0e183889 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -684,11 +684,7 @@ class BaseQuerySet(object): :param n: the maximum number of objects to return """ queryset = self.clone() - if n == 0: - queryset._cursor.limit(1) - else: - queryset._cursor.limit(n) - queryset._limit = n + queryset._limit = n if n != 0 else 1 # Return self to allow chaining return queryset @@ -699,7 +695,6 @@ class BaseQuerySet(object): :param n: the number of objects to skip before returning results """ queryset = self.clone() - queryset._cursor.skip(n) queryset._skip = n return queryset @@ -717,7 +712,6 @@ class BaseQuerySet(object): .. versionadded:: 0.5 """ queryset = self.clone() - queryset._cursor.hint(index) queryset._hint = index return queryset diff --git a/tests/document/indexes.py b/tests/document/indexes.py index db1b4562..ccc6cf44 100644 --- a/tests/document/indexes.py +++ b/tests/document/indexes.py @@ -577,11 +577,11 @@ class IndexesTest(unittest.TestCase): self.assertEqual(BlogPost.objects.hint('tags').count(), 10) else: def invalid_index(): - BlogPost.objects.hint('tags') + BlogPost.objects.hint('tags').next() self.assertRaises(TypeError, invalid_index) def invalid_index_2(): - return BlogPost.objects.hint(('tags', 1)) + return BlogPost.objects.hint(('tags', 1)).next() self.assertRaises(Exception, invalid_index_2) def test_unique(self): diff --git a/tests/queryset/queryset.py b/tests/queryset/queryset.py index 9f4cd9b9..a2b839d6 100644 --- a/tests/queryset/queryset.py +++ b/tests/queryset/queryset.py @@ -188,6 +188,10 @@ class QuerySetTest(unittest.TestCase): "[, ]", "%s" % self.Person.objects[1:3]) self.assertEqual( "[, ]", "%s" % self.Person.objects[51:53]) + # Test only after limit + self.assertEqual(self.Person.objects().limit(2).only('name')[0].age, None) + # Test only after skip + self.assertEqual(self.Person.objects().skip(2).only('name')[0].age, None) def test_find_one(self): """Ensure that a query using find_one returns a valid result.