fastapi 中的 pydantic 模型验证

问题描述 投票:0回答:1
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 验证器,但对于上述内容,我需要比较两者,这可以用相同的方法吗

python validation schema fastapi pydantic
1个回答
0
投票
@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

来工作的
© www.soinside.com 2019 - 2024. All rights reserved.