【发布时间】:2021-10-12 07:50:08
【问题描述】:
我编写了一个 Pydantic 模型来验证 API 负载。
payload有两个属性emailIdlist和rolestr
{
"emailId": [],
"role":"Administrator"
}
我需要对属性 email 进行两次验证 -
-
emailId不能为空。 -
emailId不得包含来自 x、y、z 域的电子邮件。
因此,我为 emailId 编写了 2 个验证方法,如下所示 -
class PayloadValidator(BaseModel):
emailId: List[str]
role: str
@validator("emailId")
def is_email_list_empty(cls, email):
if not email_id:
raise ValueError("Email list is empty.")
return email_id
@validator("emailId")
def valid_domains(cls, emailId):
pass
这里的问题是,如果emailId 列表为空,那么验证器不会立即raise ValueError。它等待所有验证方法完成执行,这给我带来了一些严重的问题。
有什么方法可以实现吗?
【问题讨论】:
-
为此使用
pre(def is_email_list_empty(cls, email, pre=True)) 首先进行列表验证 -
它不能解决问题。它仍在执行
valid_domain()。我希望它立即引发错误并终止进一步的验证。