return 使用字段名称而不是别名作为 fastapi 响应的 pydantic 模型

return pydantic model with field names instead of alias as fastapi response

我正在尝试 return 我的模型使用定义的字段名称而不是其别名。

class FooModel(BaseModel):
    foo: str = Field(..., alias="bar")

@app.get("/") -> FooModel:
    return FooModel(**{"bar": "baz"})

响应将是 {"bar": "baz"},而我想要 {"foo": "baz"}。我知道在使用模型的 dict 方法时有点可能,但它感觉不对并且弄乱了请求处理程序的输入。

@app.get("/") -> FooModel:
    return FooModel(**{"bar": "baz"}).dict(by_alias=False)

我觉得应该可以在 config class 中设置这个,但是我找不到合适的选项。

您可以将response_model_by_alias=False添加到路径操作装饰器。文档中提到了此密钥 here

例如:

@app.get("/model", response_model=Model, response_model_by_alias=False)
def read_model():
    return Model(alias="Foo")