我正在从版本1迁移到版本2,并try 用@field_validator替换deprecated @validator的所有用法.

然而,我之前使用的是pre validator argument,在移动到@field_validator之后,我收到以下错误:

TypeError: field_validator() got an unexpected keyword argument 'pre'

在V2中是否也不推荐使用PRE?它似乎仍然在V2 validator documentation名中被引用,尽管在页面顶部有警告:

此页面仍需要更新以适应v2.0.

希望其他人已经解决了这一问题,并能提出最好的前进路由.谢谢!

推荐答案

它似乎仍然在V2验证器文档中引用[...]

不怎么有意思.至少在field validators区中没有任何地方.(从今天起,在"模型验证器"部分中只有一个过时的提及.)

但是,还有一个指向field_validator修饰器的详细API参考的链接,其中显示了可以传递给它的确切参数.

现在,最接近v1pre=True参数的应该是101参数.

假设您有以下在Pydtic v1中的代码:

from pydantic import BaseModel, validator


class Foo(BaseModel):
    x: int

    @validator("x", pre=True)
    def do_stuff(cls, v: object) -> object:
        if v is None:
            return 0
        return v


print(Foo(x=None))  # x=0

您必须在v2中将其重写如下:

from pydantic import BaseModel, field_validator


class Foo(BaseModel):
    x: int

    @field_validator("x", mode="before")
    def do_stuff(cls, v: object) -> object:
        if v is None:
            return 0
        return v


print(Foo(x=None))  # x=0

我预计维护人员将逐渐重写和扩展文档,以涵盖更多细节.

Python相关问答推荐

过载功能是否包含Support Int而不是Support Int?

添加包含中具有任何值的其他列的计数的列

如何根据另一列值用字典中的值替换列值

如何使用Google Gemini API为单个提示生成多个响应?

从webhook中的短代码(而不是电话号码)接收Twilio消息

@Property方法上的inspect.getmembers出现意外行为,引发异常

DataFrame groupby函数从列返回数组而不是值

如何在Python中将returns.context. DeliverresContext与Deliverc函数一起使用?

更改键盘按钮进入'

无法使用requests或Selenium抓取一个href链接

递归访问嵌套字典中的元素值

多指标不同顺序串联大Pandas 模型

无法连接到Keycloat服务器

在pandas数据框中计算相对体积比指标,并添加指标值作为新列

基于形状而非距离的两个numpy数组相似性

如何找出Pandas 图中的连续空值(NaN)?

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

如何将数据帧中的timedelta转换为datetime

在极点中读取、扫描和接收有什么不同?

如何使用大量常量优化代码?