diff --git a/mongoengine/base.py b/mongoengine/base.py index 02433874..909ed6cd 100644 --- a/mongoengine/base.py +++ b/mongoengine/base.py @@ -762,7 +762,7 @@ class BaseDocument(object): if value: continue - # If we've set a value that ain't the default value unset it. + # If we've set a value that ain't the default value dont unset it. default = None if path in self._fields: @@ -789,8 +789,8 @@ class BaseDocument(object): if default is not None: if callable(default): default = default() - if default != value: - continue + if default != value: + continue del(set_data[path]) unset_data[path] = 1 diff --git a/tests/document.py b/tests/document.py index 146681bf..5789e204 100644 --- a/tests/document.py +++ b/tests/document.py @@ -1048,6 +1048,26 @@ class DocumentTest(unittest.TestCase): except ValidationError: self.fail() + def test_save_to_a_value_that_equates_to_false(self): + + class Thing(EmbeddedDocument): + count = IntField() + + class User(Document): + thing = EmbeddedDocumentField(Thing) + + User.drop_collection() + + user = User(thing=Thing(count=1)) + user.save() + user.reload() + + user.thing.count = 0 + user.save() + + user.reload() + self.assertEquals(user.thing.count, 0) + def test_save_max_recursion_not_hit(self): class Person(Document):