diff --git a/mongoengine/queryset.py b/mongoengine/queryset.py index 8ea7ca31..77cad564 100644 --- a/mongoengine/queryset.py +++ b/mongoengine/queryset.py @@ -1365,6 +1365,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 92be1d3b..67f1ea2a 100644 --- a/tests/queryset.py +++ b/tests/queryset.py @@ -570,7 +570,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