From 806fe9b63ef3a53861d4cf5ac96d7092befce081 Mon Sep 17 00:00:00 2001 From: collerek Date: Sun, 23 Aug 2020 13:15:04 +0200 Subject: [PATCH] fix setting new related model just from dict with pkname --- .coverage | Bin 53248 -> 53248 bytes ormar/fields/foreign_key.py | 2 ++ tests/test_foreign_keys.py | 2 ++ tests/test_more_reallife_fastapi.py | 6 +++--- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.coverage b/.coverage index f3e5fafb45eb490917ec4b248da6544fb15b365f..ed0ddb4c4d3c00f69f8658523e319e8874bb24e6 100644 GIT binary patch delta 60 zcmV-C0K@-)paX!Q1F$hK1~WP_G&(Y~H!mq)75Tq^n}5A?=ic7)zdPr@lfOG}pAWNj Sjy(Yee;@bxJrA?Ek4QiUE*l5{ delta 60 zcmV-C0K@-)paX!Q1F$hK1~NJ|G&(c0H!mq)75?wv=3npJxwrTH@6P$} "Model": + if len(value.keys()) == 1 and list(value.keys())[0] == cls.to.Meta.pkname: + value["__pk_only__"] = True model = cls.to(**value) cls.register_relation(model, child) return model diff --git a/tests/test_foreign_keys.py b/tests/test_foreign_keys.py index f1bd7fa..6463eb6 100644 --- a/tests/test_foreign_keys.py +++ b/tests/test_foreign_keys.py @@ -133,6 +133,8 @@ async def test_model_crud(): assert album1.pk == 1 assert album1.tracks is None + await Track.objects.create(album={"id": track.album.pk}, title="The Bird2", position=4) + @pytest.mark.asyncio async def test_select_related(): diff --git a/tests/test_more_reallife_fastapi.py b/tests/test_more_reallife_fastapi.py index 02233e6..31e31b9 100644 --- a/tests/test_more_reallife_fastapi.py +++ b/tests/test_more_reallife_fastapi.py @@ -61,13 +61,13 @@ def create_test_database(): @app.get("/items/", response_model=List[Item]) async def get_items(): items = await Item.objects.select_related("category").all() - return [item.dict() for item in items] + return items @app.post("/items/", response_model=Item) async def create_item(item: Item): - item = await Item.objects.create(**item.dict()) - return item.dict() + await item.save() + return item @app.post("/categories/", response_model=Category)