我知道对于单个字段,它可以通过constr
完成,例如:
class Email(BaseModel):
local_part: EmailPartType[constr(max_length=255)]
domain_part: EmailPartType[constr(max_length=255)]
但是我如何设置max_length为这两个字段组合? 最终,我可以覆盖我的__init__
或我的自定义工厂来实现这一点。但是我想知道在pydantic中是否有更整洁的方法这对我来说是件新鲜事。
您可以使用根验证器使用一个通用条件来验证多个字段:
from pydantic import constr, root_validator, BaseModel
class Email(BaseModel):
local_part: str
domain_part: str
@root_validator
def local_domain_len(cls, values):
assert len(values['local_part']) + len(
values['domain_part']) <= 255, 'Common local and domain length is greater than 255'
return values