哪种类型的提示表示属性不能为None?

问题描述 投票:1回答:1

在下面的代码中,我需要将my_attr声明为任何内容[except None

我应该将Any换成什么?

from pydantic import BaseModel
from typing import Any

class MyClass(BaseModel):
    my_attr: Any
python typing pydantic
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.