【问题标题】:pydantic's `Field`'s default value ignores constraint checkspydantic 的 `Field` 的默认值忽略约束检查
【发布时间】:2022-08-18 17:56:31
【问题描述】:
from pydantic import BaseModel

class User(BaseModel):
  age: int = Field(\'foo\', ge=0)


User()  # doesn\'t raise an error
# User(age=\'foo\')

为什么这不会引发错误,因为字符串 foo 被传递,即使 int 是预期的?

User(age=\'foo\') 但是按预期提高了ValidationError

    标签: python pydantic


    【解决方案1】:

    这连接到您可以添加到所有模型的配置。 默认情况下,字段的默认值是从验证中排除的,只是假设程序员放置了一个正确的默认值。 但是,如果您想强制执行验证,您可以通过向模型添加 Config 来强制执行它:

    class User(BaseModel):
      age: int = Field('foo', ge=0)
    
      class Config(BaseConfig):
          validate_all = True
    
    
    if __name__ == "__main__":
        User()  # Now raise an error
    
    

    还可以查看文档中的其他配置选项:https://pydantic-docs.helpmanual.io/usage/model_config/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多