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")
我正在尝试 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")