我正在使用 Pydantic 来建模对象。如何使两个字段互斥?
例如,如果我有以下模型:
class MyModel(pydantic.BaseModel):
a: typing.Optional[str]
b: typing.Optional[str]
Run Code Online (Sandbox Code Playgroud)
我希望场a与场b是互斥的。我只想设置其中之一。有办法实现吗?
您可以使用 pydantic.validator 装饰器来添加自定义验证。
from typing import Optional
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2860 次 |
| 最近记录: |