class QueryParams(BaseModel):
origin: str = Field(...,)
destination: str = Field(...,)
@field_validator('origin', 'destination')
@classmethod
def different_origin_destination(cls, v: str, info: ValidationInfo) -> str:
if isinstance(v, str):
print(v)
is_same = ""
print(is_same)
assert is_same, f'{info.field_name} origin and destination cant be same'
return v
对于许多字段,我需要在模式中使用 pydantic 验证器,但对于上述内容,我需要比较两者,这可以用相同的方法吗。
@model_validator(mode='before')
@classmethod
def check_input_data(cls, data: Any) -> Any:
if isinstance(data, dict):
if data.get('origin') == data.get('destination'):
raise ValueError("Origin and Destination can't be the same.")
上面的代码是通过使用model_validator
来工作的