From 04047e4cd93a9fbdd37421f1174a2c44629aff1c Mon Sep 17 00:00:00 2001 From: collerek Date: Tue, 30 Mar 2021 17:33:30 +0200 Subject: [PATCH] change order in save_related -> first upsert self then follow --- ormar/models/model.py | 6 +++--- tests/test_queries/test_deep_relations_select_all.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ormar/models/model.py b/ormar/models/model.py index 641aaa5..264c6a2 100644 --- a/ormar/models/model.py +++ b/ormar/models/model.py @@ -191,6 +191,9 @@ class Model(ModelRow): value = [value] for val in value: + if not val.saved or save_all: + await val.upsert() + update_count += 1 if follow: update_count = await val.save_related( follow=follow, @@ -198,9 +201,6 @@ class Model(ModelRow): relation_map=relation_map, update_count=update_count, ) - if not val.saved or save_all: - await val.upsert() - update_count += 1 return update_count async def update(self: T, **kwargs: Any) -> T: diff --git a/tests/test_queries/test_deep_relations_select_all.py b/tests/test_queries/test_deep_relations_select_all.py index 948b81f..7cef48e 100644 --- a/tests/test_queries/test_deep_relations_select_all.py +++ b/tests/test_queries/test_deep_relations_select_all.py @@ -155,4 +155,4 @@ def create_test_database(): async def test_saving_related_fk_rel(): async with database: async with database.transaction(force_rollback=True): - await Report.objects.select_all(follow=True).all() + await Report.objects.select_all(follow=True).all() \ No newline at end of file