diff --git a/docs/changelog.rst b/docs/changelog.rst index b9ad5b0e..f9f68f50 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -26,6 +26,7 @@ Changes in 0.9.X - DEV - Removed get_or_create() deprecated since 0.8.0. #300 - Capped collection multiple of 256. #1011 - Added `BaseQuerySet.aggregate_sum` and `BaseQuerySet.aggregate_average` methods. +- Fix for delete with write_concern {'w': 0}. #1008 Changes in 0.9.0 ================ diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index c3abd46a..99d96044 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -418,7 +418,8 @@ class BaseQuerySet(object): **{'pull_all__%s' % field_name: self}) result = queryset._collection.remove(queryset._query, **write_concern) - return result["n"] + if result: + return result.get("n") def update(self, upsert=False, multi=True, write_concern=None, full_result=False, **update): diff --git a/tests/queryset/queryset.py b/tests/queryset/queryset.py index d4348678..7b090238 100644 --- a/tests/queryset/queryset.py +++ b/tests/queryset/queryset.py @@ -1634,6 +1634,11 @@ class QuerySetTest(unittest.TestCase): self.Person.objects()[:1].delete() self.assertEqual(1, BlogPost.objects.count()) + def test_limit_with_write_concern_0(self): + + p1 = self.Person(name="User Z", age=20).save() + p1.delete(w=0) + def test_reference_field_find(self): """Ensure cascading deletion of referring documents from the database. """