class mail(BaseModel):
mailid: int
email: str
class User(BaseModel):
id: int
name: str
mails: List[mail]
data1 = {
'id': 123,
'name': 'Jane Doe',
'mails':[
{'mailid':1,'email':'aeajhs@gmail.com'},
{'mailid':2,'email':'aeajhsds@gmail.com'}
]
}
userobj = User(**data1) # Accepted
data2 = {
'id': 123,
'name': 'Jane Doe',
'mails':[
{'mailid':1,'email':'aeajhs@gmail.com'},
{'email':'aeajhsds@gmail.com'}
]
}
userobj = User(**data2) # Discarded or not accepted
我想检查传递给pydantic模型的字典中的键,因此如果给定字典中不存在键,我想丢弃该数据。
例如,在邮件中的data2中{'email':'aeajhsds@gmail.com'}
必须丢弃data2
现在还不清楚“丢弃”数据是什么意思
当前实现应引发
ValidationError
,因为data2
中mails
的第二项中缺少mailid
:如果您的意图是简单地忽略
data2
(或者通常是无效输入),我建议将所有内容包装在try
-except
块中,例如:程序现在将显示以下消息:
另类
另一方面,如果您想忽略
mailid
缺失的事实,可以在模型定义中设置Optional
,例如:你可以使用@juanpa arrivillaga所说的
pydantic.validator
这里有几个小技巧:
Optional
验证结束时,它可能为空李>pre=True
是否应在标准验证器之前调用此验证器(否则在之后)您可以在预验证中迭代
mails
列表,并执行一个简单的try
-子句来检查每个mail
项是否正确:相关问题 更多 >
编程相关推荐