我的目标如下:
{
"name": "foo",
"parent": {"id": "bar", "age": 27}
}
我希望得到以下输出:
{"name": "foo", "parent_id": "bar"}
这是我的Pydantic模型
型号:
class TeacherOutput(PropertyBaseModel):
name: Optional[str]
parent_id: Optional[str]
控制器:
@router.get('/teachers', response_model=List[TeacherOutput])
async def get_all():
teachers = app.model.Teacher.all()
return teachers
我不知道如何从嵌套对象映射所需的属性。我不需要其他属性
您可以重写
TeacherOutput
模型的__init__
方法,这样当FastAPI序列化Teacher
列表时,您的模型从传入的关键字参数中提取parent['id']
通过这种方式,将响应的格式设置与获取实际数据的方式/地点分开。(我假设
TeacherOutput
确实只是用于响应。)。由此产生的反应将是:参见相关阅读资料:
您可以使用的另一种方法(IMHO更干净)是使用多个模型,如Gino的回答所示,但是您可以简单地在path操作函数中转换数据,而不是覆盖
__init__
函数,如下所示:相关问题 更多 >
编程相关推荐