如何为 Pydantic 中组合的两个字段设置 max_length
How to set max_length for two fields combined in Pydantic
我知道对于单个字段,可以通过 constr
类似的方式完成:
class Email(BaseModel):
local_part: EmailPartType[constr(max_length=255)]
domain_part: EmailPartType[constr(max_length=255)]
但是如何将这两个字段combined设置为max_length呢?最终,我可以覆盖我的 __init__
或我的自定义工厂来实现它。但我想知道 pydantic 中是否有更简洁的方法,这对我来说是一个新的(而且很好)东西。
您可以使用 root validator 来验证使用共同条件的多个字段:
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
我知道对于单个字段,可以通过 constr
类似的方式完成:
class Email(BaseModel):
local_part: EmailPartType[constr(max_length=255)]
domain_part: EmailPartType[constr(max_length=255)]
但是如何将这两个字段combined设置为max_length呢?最终,我可以覆盖我的 __init__
或我的自定义工厂来实现它。但我想知道 pydantic 中是否有更简洁的方法,这对我来说是一个新的(而且很好)东西。
您可以使用 root validator 来验证使用共同条件的多个字段:
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