Skip to content

Commit 1a97dfd

Browse files
committed
Better fix for .save() _delta issue with DbRefs
refs: hmarr#518
1 parent 9fecf2b commit 1a97dfd

File tree

2 files changed

+3
-8
lines changed

2 files changed

+3
-8
lines changed

mongoengine/base.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,18 +1043,12 @@ def _delta(self):
10431043
for path in set_fields:
10441044
parts = path.split('.')
10451045
d = doc
1046-
dbref = False
10471046
for p in parts:
1048-
if isinstance(d, DBRef):
1049-
dbref = True
1050-
elif hasattr(d, '__getattr__'):
1051-
d = getattr(p, d)
1052-
elif p.isdigit():
1047+
if p.isdigit():
10531048
d = d[int(p)]
10541049
else:
10551050
d = d.get(p)
1056-
if not dbref:
1057-
set_data[path] = d
1051+
set_data[path] = d
10581052
else:
10591053
set_data = doc
10601054
if '_id' in set_data:

mongoengine/document.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ def save(self, safe=True, force_insert=False, validate=True, write_options=None,
226226
if cascade_kwargs: # Allow granular control over cascades
227227
kwargs.update(cascade_kwargs)
228228
kwargs['_refs'] = _refs
229+
self._changed_fields = []
229230
self.cascade_save(**kwargs)
230231

231232
except pymongo.errors.OperationFailure, err:

0 commit comments

Comments
 (0)