Подсказка какого типа указывает, что атрибут не должен иметь значение None?
В следующем коде мне нужно объявить my_attr
как что-нибудь кроме None
.
Что мне обменять Any
за?
from pydantic import BaseModel
from typing import Any
class MyClass(BaseModel):
my_attr: Any
1 ответ
Решение
Для этого вам понадобится валидатор, например:
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
все еще допустимое значение), это должно быть возможно после версии 1.2, которая должна быть выпущена в ближайшие несколько дней. см. https://github.com/samuelcolvin/pydantic/pull/1031.