Fixes .save _delta issue with DBRefs

Fixes hmarr/mongoengine#518
This commit is contained in:
Ross Lawley
2012-06-19 09:49:22 +01:00
parent 89220c142b
commit 7ca2ea0766
4 changed files with 14 additions and 7 deletions

View File

@@ -1050,14 +1050,18 @@ Invalid data to create a `%s` instance.\n%s""".strip() % (cls._class_name, error
for path in set_fields:
parts = path.split('.')
d = doc
dbref = False
for p in parts:
if hasattr(d, '__getattr__'):
if isinstance(d, DBRef):
dbref = True
elif hasattr(d, '__getattr__'):
d = getattr(p, d)
elif p.isdigit():
d = d[int(p)]
else:
d = d.get(p)
set_data[path] = d
if not dbref:
set_data[path] = d
else:
set_data = doc
if '_id' in set_data:

View File

@@ -114,7 +114,7 @@ class DeReference(object):
doc = get_document(ref["_cls"])._from_son(ref)
elif doc_type is None:
doc = get_document(
''.join(x.capitalize()
''.join(x.capitalize()
for x in col.split('_')))._from_son(ref)
else:
doc = doc_type._from_son(ref)