首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pydantic :重复验证器功能

pydantic :重复验证器功能
EN

Stack Overflow用户
提问于 2021-10-21 03:01:46
回答 3查看 2.4K关注 0票数 2

我使用了下面的代码:它显示了复制的验证器。为什么不能同时使用?如果不能使用@validator,如何在Field中创建别名

代码语言:javascript
复制
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

这是回溯:

代码语言:javascript
复制
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`
EN

回答 3

Stack Overflow用户

发布于 2022-05-26 13:17:01

在我的例子中,这是因为验证方法接收的是self而不是cls,这意味着:

代码语言:javascript
复制
    @validator("my_field")
    def parse_my_field(self, v):
        ...

而不是:

代码语言:javascript
复制
    @validator("my_field")
    def parse_my_field(cls, v):
        ...
票数 2
EN

Stack Overflow用户

发布于 2022-07-03 05:12:37

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

票数 1
EN

Stack Overflow用户

发布于 2022-10-31 07:02:46

我的问题是由代码前面的错误(似乎无关)引起的。一些碰撞效应导致了duplicate validator function错误.当我修复了前面的错误时,这个错误就消失了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69655338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档