Pydantic 的两个属性中的任何一个都应该是可选的

Either of the two Pydantic attributes should be optional

我想验证一个有效载荷模式,我正在使用 Pydantic 来做这件事。继承Pydantic的BaseModel创建的class命名为PayloadValidator,有两个属性addCustomPages,即list of dictionaries & deleteCustomPages 这是一个 字符串列表 .

class NestedCustomPages(BaseModel):
    """This is the schema for each custom page."""

    html: str
    label: str
    type: int

class PayloadValidator(BaseModelWithContext):
    """This class defines the payload load schema and also validates it."""

    addCustomPages: Optional[List[NestedCustomPages]]
    deleteCustomPages: Optional[List[str]]

我想将 class PayloadValidator 的任一属性声明为可选。我已经尝试为此寻找解决方案,但找不到任何东西。

不久前在 pydantic Github 页面上有一个关于此的问题:https://github.com/samuelcolvin/pydantic/issues/506。那里的结论包括一个带有模型的玩具示例,该模型需要使用验证器填充 a 或 b:

from typing import Optional
from pydantic import validator
from pydantic.main import BaseModel


class MyModel(BaseModel):
    a: Optional[str] = None
    b: Optional[str] = None

    @validator('b', always=True)
    def check_a_or_b(cls, b, values):
        if not values.get('a') and not b:
            raise ValueError('Either a or b is required')
        return b


mm = MyModel()