fix setting new related model just from dict with pkname
This commit is contained in:
@ -87,6 +87,8 @@ class ForeignKeyField(BaseField):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _construct_model_from_dict(cls, value: dict, child: "Model") -> "Model":
|
def _construct_model_from_dict(cls, value: dict, child: "Model") -> "Model":
|
||||||
|
if len(value.keys()) == 1 and list(value.keys())[0] == cls.to.Meta.pkname:
|
||||||
|
value["__pk_only__"] = True
|
||||||
model = cls.to(**value)
|
model = cls.to(**value)
|
||||||
cls.register_relation(model, child)
|
cls.register_relation(model, child)
|
||||||
return model
|
return model
|
||||||
|
|||||||
@ -133,6 +133,8 @@ async def test_model_crud():
|
|||||||
assert album1.pk == 1
|
assert album1.pk == 1
|
||||||
assert album1.tracks is None
|
assert album1.tracks is None
|
||||||
|
|
||||||
|
await Track.objects.create(album={"id": track.album.pk}, title="The Bird2", position=4)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_select_related():
|
async def test_select_related():
|
||||||
|
|||||||
@ -61,13 +61,13 @@ def create_test_database():
|
|||||||
@app.get("/items/", response_model=List[Item])
|
@app.get("/items/", response_model=List[Item])
|
||||||
async def get_items():
|
async def get_items():
|
||||||
items = await Item.objects.select_related("category").all()
|
items = await Item.objects.select_related("category").all()
|
||||||
return [item.dict() for item in items]
|
return items
|
||||||
|
|
||||||
|
|
||||||
@app.post("/items/", response_model=Item)
|
@app.post("/items/", response_model=Item)
|
||||||
async def create_item(item: Item):
|
async def create_item(item: Item):
|
||||||
item = await Item.objects.create(**item.dict())
|
await item.save()
|
||||||
return item.dict()
|
return item
|
||||||
|
|
||||||
|
|
||||||
@app.post("/categories/", response_model=Category)
|
@app.post("/categories/", response_model=Category)
|
||||||
|
|||||||
Reference in New Issue
Block a user