diff --git a/mongoengine/base.py b/mongoengine/base.py index 8028ca97..163a198f 100644 --- a/mongoengine/base.py +++ b/mongoengine/base.py @@ -1293,6 +1293,10 @@ class BaseDict(dict): self._mark_as_changed() super(BaseDict, self).popitem(*args, **kwargs) + def update(self, *args, **kwargs): + self._mark_as_changed() + super(BaseDict, self).update(*args, **kwargs) + def _mark_as_changed(self): if hasattr(self._instance, '_mark_as_changed'): self._instance._mark_as_changed(self._name) diff --git a/tests/fields.py b/tests/fields.py index 37972fd0..04ef3d90 100644 --- a/tests/fields.py +++ b/tests/fields.py @@ -772,6 +772,13 @@ class FieldTest(unittest.TestCase): # Confirm handles non strings or non existing keys self.assertEquals(BlogPost.objects.filter(info__details__test__exact=5).count(), 0) self.assertEquals(BlogPost.objects.filter(info__made_up__test__exact='test').count(), 0) + + post = BlogPost.objects.create(info={'title': 'original'}) + post.info.update({'title': 'updated'}) + post.save() + post.reload() + self.assertEquals('updated', post.info['title']) + BlogPost.drop_collection() def test_dictfield_strict(self):