Pydantic: 重复的验证函数。

5
我使用了以下代码,出现了重复的验证器。为什么不能同时使用两个验证器?如果我无法使用Field,该如何在@validator中创建别名?
from pydantic import BaseModel, validator, Field
import datetime

class MultiSourceInput(BaseModel):
    abc :   str = Field(..., alias= 'abc_1',description= "xxxxxxxxxxxx.")
    xyz :   int= Field(..., description= "xxxxxxxx ",ge=0, le=150)

    @validator("abc")
    def abc(value): 
        values = float(value) 
        if value <=141 and value>=0: 
            return value
        else:
            0

以下是追踪信息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 37, in MultiSourceInput
  File "pydantic/class_validators.py", line 85, in pydantic.class_validators.validator.dec
  File "pydantic/class_validators.py", line 144, in pydantic.class_validators._prepare_validator
pydantic.errors.ConfigError: duplicate validator function "__main__.MultiSourceInput.abc"; if this is intended, set `allow_reuse=True`

2
你的函数名称和属性名称可能相同了吗? - MatsLindh
3个回答

5
在我的情况下,这是因为验证方法接收到的是self而不是cls,意味着:
    @validator("my_field")
    def parse_my_field(self, v):
        ...

改为:

    @validator("my_field")
    def parse_my_field(cls, v):
        ...

1
@kd88 你自己检查一下吧... - A. Kali

3
我的问题是由代码中早期的错误(看起来不相关)引起的。一些连锁反应导致了“重复验证器函数”出错。当我修复先前的错误时,这个问题就解决了。

我的问题是由于一次未报告的圆形进口引起的。 - undefined

0

检查是否使用abc方法名创建了验证器。您可能需要重命名该方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接