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()
我想验证一个有效载荷模式,我正在使用 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()