Подсказка какого типа указывает, что атрибут не должен иметь значение 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.

Другие вопросы по тегам