返回带有字段名称而不是别名的 pydantic 模型作为 fastapi 响应

2024-01-27

我试图用定义的字段名称而不是别名返回我的模型。

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)

我觉得应该可以在配置类 https://pydantic-docs.helpmanual.io/usage/model_config/,但我找不到正确的选项。


你可以加response_model_by_alias=False到路径操作装饰器。提到了这个关键here https://fastapi.tiangolo.com/tutorial/response-model/?h=response_model_by_alias#response_model_include-and-response_model_exclude在文档中。

例如:

@app.get("/model", response_model=Model, response_model_by_alias=False)
def read_model():
    return Model(alias="Foo")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回带有字段名称而不是别名的 pydantic 模型作为 fastapi 响应 的相关文章

随机推荐