如何在 Pydantic 中创建互斥字段
How to create mutually exclusive fields in Pydantic
我正在使用 Pydantic 为对象建模。如何让两个字段互斥?
例如,如果我有以下模型:
class MyModel(pydantic.BaseModel):
a: typing.Optional[str]
b: typing.Optional[str]
我希望字段 a
和字段 b
互斥。我只想设置其中一个。有办法实现吗?
您可以使用 pydantic.validator 装饰器来添加自定义验证。
from pydantic import BaseModel, validator
class MyModel(BaseModel):
a: Optional[str]
b: Optional[str]
@validator("b", always=True)
def mutually_exclusive(cls, v, values):
if values["a"] is not None and v:
raise ValueError("'a' and 'b' are mutually exclusive.")
return v
我正在使用 Pydantic 为对象建模。如何让两个字段互斥?
例如,如果我有以下模型:
class MyModel(pydantic.BaseModel):
a: typing.Optional[str]
b: typing.Optional[str]
我希望字段 a
和字段 b
互斥。我只想设置其中一个。有办法实现吗?
您可以使用 pydantic.validator 装饰器来添加自定义验证。
from pydantic import BaseModel, validator
class MyModel(BaseModel):
a: Optional[str]
b: Optional[str]
@validator("b", always=True)
def mutually_exclusive(cls, v, values):
if values["a"] is not None and v:
raise ValueError("'a' and 'b' are mutually exclusive.")
return v