我使用了下面的代码:它显示了复制的验证器。为什么不能同时使用?如果不能使用@validator,如何在Field中创建别名
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`发布于 2022-05-26 13:17:01
在我的例子中,这是因为验证方法接收的是self而不是cls,这意味着:
@validator("my_field")
def parse_my_field(self, v):
...而不是:
@validator("my_field")
def parse_my_field(cls, v):
...发布于 2022-07-03 05:12:37
检查是否存在使用abc方法名创建的验证器。您可能需要重命名该方法。
发布于 2022-10-31 07:02:46
我的问题是由代码前面的错误(似乎无关)引起的。一些碰撞效应导致了duplicate validator function错误.当我修复了前面的错误时,这个错误就消失了。
https://stackoverflow.com/questions/69655338
复制相似问题