You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 13:43:16