在以下代码中,我需要将my_attr
声明为除外 None
。
我应该将Any
换成什么?
from pydantic import BaseModel
from typing import Any
class MyClass(BaseModel):
my_attr: Any
答案 0 :(得分:2)
要实现此目的,您需要使用验证器,例如:
from pydantic import BaseModel, validator
class MyClass(BaseModel):
my_attr: Any
@validator('my_attr', alwasy=True)
def check_not_none(cls, value):
assert value is not None, 'may not be None'
return value
但这实际上不太可能是您想要的,您最好使用联合并包括您允许的类型的详尽列表,例如Union[str, bytes, int, float, Decimal, datetime, date, list, dict, ...]
。
如果您只想使该字段为必填字段(但仍将None
设为允许值),则应在v1.2之后发布,并应在接下来的几天内发布该字段。参见samuelcolvin/pydantic#1031。