假设我有一些BaseModel
,我想检查它的options
列表是否为空。我可以完美地做到这一点validator
:
class Trait(BaseModel):
name: str
options: List[str]
@validator("options")
def options_non_empty(cls, v):
assert len(v) > 0
return v
还有其他更优雅的方法吗?
如果你想使用一个@validator
:
return v if v else doSomething
Python 将空列表的布尔值假定为 False
如果您不想使用@validator
:
在 Pydantic 中,使用conlist
:
from pydantic import BaseModel, conlist
from typing import List
class Trait(BaseModel):
name: str
options: conlist(str, min_items=1)
在 Python 中,空列表是假的,而具有任意数量元素的列表是真的:
>>> bool([])
False
>>> bool([1,2,3])
True
>>> bool([False])
True
>>> bool([[]])
True
这意味着您可以简单地assert v
或assert Trait.options
确认该列表是非空的。