Pydantic v2 迁移备忘

更新时间:2025.03.26

← 返回首页
Python类型迁移

配置和序列化 API

Pydantic v2 用类属性 model_config 替代 v1 的内部 Config 类;导出模型使用 model_dump(),JSON 使用 model_dump_json()

from pydantic import BaseModel, ConfigDict, field_validator

class User(BaseModel):
    model_config = ConfigDict(extra='forbid')
    name: str

    @field_validator('name')
    @classmethod
    def strip_name(cls, value: str) -> str:
        return value.strip()

payload = User(name=' Nono ').model_dump()

v1 的 @validator 已被 @field_validator 替代,模型级校验使用 @model_validator。迁移时要留意 validator 的执行模式和拿到的数据形态。

性能敏感路径可使用 TypeAdapter 校验非模型类型,但需要把 adapter 复用起来,反复构造会抵消收益。

迁移过程中应锁定 pydantic 和依赖框架版本;FastAPI 等框架对 v2 的支持范围也会影响最终行为。

相关笔记