| @@ -1043,11 +1043,16 @@ Invalid data to create a `%s` instance.\n%s""".strip() % (cls._class_name, error | ||||
|             for path in set_fields: | ||||
|                 parts = path.split('.') | ||||
|                 d = doc | ||||
|                 new_path = [] | ||||
|                 for p in parts: | ||||
|                     if p.isdigit(): | ||||
|                     if isinstance(d, DBRef): | ||||
|                         break | ||||
|                     elif p.isdigit(): | ||||
|                         d = d[int(p)] | ||||
|                     else: | ||||
|                     elif hasattr(d, 'get'): | ||||
|                         d = d.get(p) | ||||
|                     new_path.append(p) | ||||
|                 path = '.'.join(new_path) | ||||
|                 set_data[path] = d | ||||
|         else: | ||||
|             set_data = doc | ||||
|   | ||||
| @@ -226,7 +226,7 @@ class Document(BaseDocument): | ||||
|                 if cascade_kwargs:  # Allow granular control over cascades | ||||
|                     kwargs.update(cascade_kwargs) | ||||
|                 kwargs['_refs'] = _refs | ||||
|                 self._changed_fields = [] | ||||
|                 #self._changed_fields = [] | ||||
|                 self.cascade_save(**kwargs) | ||||
|  | ||||
|         except pymongo.errors.OperationFailure, err: | ||||
| @@ -246,6 +246,7 @@ class Document(BaseDocument): | ||||
|         """Recursively saves any references / generic references on an object""" | ||||
|         from fields import ReferenceField, GenericReferenceField | ||||
|         _refs = kwargs.get('_refs', []) or [] | ||||
|  | ||||
|         for name, cls in self._fields.items(): | ||||
|             if not isinstance(cls, (ReferenceField, GenericReferenceField)): | ||||
|                 continue | ||||
|   | ||||
		Reference in New Issue
	
	Block a user