Skip to content

Commit efca40d

Browse files
committed
Save the children documents first to avoid the issue where a parent cannot save due to having new children documents.
1 parent f9a303f commit efca40d

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

mongoengine/document.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -411,14 +411,6 @@ def save(
411411
self.ensure_indexes()
412412

413413
try:
414-
# Save a new document or update an existing one
415-
if created:
416-
object_id = self._save_create(doc, force_insert, write_concern)
417-
else:
418-
object_id, created = self._save_update(
419-
doc, save_condition, write_concern
420-
)
421-
422414
if cascade is None:
423415
cascade = self._meta.get("cascade", False) or cascade_kwargs is not None
424416

@@ -434,6 +426,14 @@ def save(
434426
kwargs["_refs"] = _refs
435427
self.cascade_save(**kwargs)
436428

429+
# Save a new document or update an existing one
430+
if created:
431+
object_id = self._save_create(doc, force_insert, write_concern)
432+
else:
433+
object_id, created = self._save_update(
434+
doc, save_condition, write_concern
435+
)
436+
437437
except pymongo.errors.DuplicateKeyError as err:
438438
message = "Tried to save duplicate unique keys (%s)"
439439
raise NotUniqueError(message % err)

0 commit comments

Comments
 (0)