如何使用 FastAPI 的“response_model_exclude_none=True”从嵌套模型中排除“None”值?

mac*_*912 12 pydantic fastapi

FastAPI 显示您可以response_model_exclude_none=True在装饰器中设置为省略值为 的字段Nonehttps://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter

我想这样做,但None我想要排除的字段嵌套在父响应模型中。IE

class InnerResponse(BaseModel):
    id: int
    name: Optional[str] = None

class Response(BaseModel):
    experience: int
    prices: List[InnerResponse]


@app.post("/dummy", response_model=apitypes.Response, response_model_exclude_none=True)
async def backend_dummy(payload: apitypes.Request):
...
Run Code Online (Sandbox Code Playgroud)

然而,当我收到回复时,这里的“价格”列表仍然InnerResponse"name": null.

有没有办法在嵌套模型上应用排除规则?

mac*_*912 9

对于在搜索时发现此内容的任何人:上面的代码工作正常,但我的问题是此代码块之外的另一个端点没有设置 response_model_exclude_none=True 。每个需要排除这些“None”值的端点都需要进行该设置。