Pydantic v2迁移:如何让field_validator在字段缺失时仍执行?
Pydantic v2 迁移:让验证器始终执行的修改方案
在Pydantic v1中,@validator的always=True参数会让验证器无论目标字段是否出现在输入payload中都执行;而v2的@field_validator默认仅在字段存在时触发验证。要让v2代码和v1行为完全一致,只需给@field_validator添加always=True参数即可,同时保留mode='before'对应v1的pre=True。
修改后的v2代码如下:
class Destination(BaseModel): destination_type: DestinationType topic: Optional[str] = None request: RequestType = None endpoint: Optional[str] = None @field_validator("endpoint", mode='before', always=True) @classmethod def check_endpoint(cls, value, info: ValidationInfo): # coding logic
参数说明:
mode='before':对应v1的pre=True,表示在字段类型转换前执行验证逻辑always=True:强制验证器无论字段是否存在于输入中都运行,和v1的always=True行为完全匹配
内容的提问来源于stack exchange,提问作者Neha
相关产品推荐
相关产品推荐

