我正在尝试更新数据库中的记录与乌龟形式。我的代码如下:
async def update(
self,
id: Any,
obj_in: UpdateSchemaType
) -> ModelType:
db_obj: ModelType = await self.model.filter(id = id).first()
data_update = jsonable_encoder(obj_in, exclude_unset=True)
db_obj_update = await db_obj.update_from_dict(data_update)
return db_obj_update
UpdateSchemaType是一个pydantic模型,ModelType是一个tortoise模型。
我正在使用fastapi中的路径操作:
@users_router.put(
'/{user_id}',
name = "Update user"
)
async def update_user(user_id: int, user_update: schemas.UserUpdate):
'Update user'
return await crud.user.update(user_id, user_update)
当我运行我的api时,我没有得到任何错误,但注册表没有更新!我做错了什么?或者我应该怎样做才能使它有用和有效?
摘自update_from_dict
方法的文档:
这将忽略任何额外的字段,并且不使用它们更新模型,但会在错误类型或更新多实例关系时引发错误。
所以你需要在update_from_dict
之后生成await object.save()