如何为Pydantic中组合的两个字段设置max_length



我知道对于单个字段,它可以通过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

最新更新