如何解决在 pydantic BaseModel 的集合中检查至少一个非空内容值?
我想验证一下,包含列表的响应在该列表的内容中至少有一个非空值。
到目前为止,我已经想到了以下带有嵌套(非集合)值的验证器,它似乎工作得很好。
然而,我通常不喜欢 Try-Catch 异常,并且想知道一种更好、更简洁的方法来做到这一点。
from pydantic import BaseModel,Field,validator
from typing import List
class Content(BaseModel):
value: str = Field(None)
class Row(BaseModel):
cell: Content = Field(None)
class Column(BaseModel):
rows: List[Row] = Field(...,min_items=1)
class Response(BaseModel):
columns: List[Column] = Field(... min_items=1)
@validator('columns',always=True)
def atLeastOneNonNullContentValueInTheColumList(cls,v):
def genValues(v):
for column in v: # columns and rows always exist...
for row in column.rows:
try:
yield row.content.value # ...but Could be None either at content or value
except AttributeError:
yield None
if not any(genValues(v)):
raise Exception('At least one value should exist')
return v
Pydantic 爱好者,类似情况如何处理?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。