diff --git a/mongoengine/queryset.py b/mongoengine/queryset.py index a6626855..a90d7591 100644 --- a/mongoengine/queryset.py +++ b/mongoengine/queryset.py @@ -1342,6 +1342,7 @@ class QuerySet(object): raise OperationError(u'Update failed [%s]' % unicode(e)) def __iter__(self): + self.rewind() return self def _sub_js_fields(self, code): diff --git a/tests/queryset.py b/tests/queryset.py index f093f6ab..5c7afe68 100644 --- a/tests/queryset.py +++ b/tests/queryset.py @@ -567,7 +567,13 @@ class QuerySetTest(unittest.TestCase): people1 = [person for person in queryset] people2 = [person for person in queryset] + # Check that it still works even if iteration is interrupted. + for person in queryset: + break + people3 = [person for person in queryset] + self.assertEqual(people1, people2) + self.assertEqual(people1, people3) def test_repr_iteration(self): """Ensure that QuerySet __repr__ can handle loops