在 FastAPI 应用程序中处理有条件必需的参数的最佳方法是什么?

Nic*_*nez 5 python rest web-development-server pydantic fastapi

我正在开发一个 FastAPI 应用程序。我有以下架构

class Address(BaseModel):
    address_string: str = Field(None)
    address_street: str = Field(None)
    addres_number: str = Field(None)
Run Code Online (Sandbox Code Playgroud)

如果address_street和addres_number不存在,我喜欢有条件地需要字段address_string,反之亦然,如果address_street不存在,则需要address_street和address_number。

目前,我通过将所有字段设置为可选并使用 root_validator 来检查一致性来管理此问题,并在所涉及字段的描述中记录此条件要求。

有没有更简洁的方法来管理 FastAPI 上的内置功能?

SCo*_*vin 3

根验证器或可选必需字段上的验证器是最佳解决方案。

这里有关于密码的类似示例。