Pydantic匹配泛型模型中嵌套的枚举



当枚举嵌套在泛型模型中时,我很难使用Pydantic来解析它们。

class MyEnum(str, Enum):
A = 'a',
B = 'b',
C = 'c'
enumT = TypeVar('enumT',bound=MyEnum)
class EnumContainer(GenericModel,Generic[enumT]):
enum_value: enumT

containerT = TypeVar('containerT', bound=EnumContainer)
class OuterContainer(GenericModel,Generic[containerT]):
container: containerT
class testEnumparsing(BaseModel):
typer: OuterContainer[EnumContainer[MyEnum.B]]
class Config:
orm_mode = True
obj = testEnumparsing(
typer= OuterContainer(
container=EnumContainer(enum_value='a')
)
)
parsed = testEnumparsing.from_orm(obj)
print(parsed)

有了Generic模型,如何使对象仅对特定Enum值求值为testEnumparsing?在上面的例子中,只有当传递的值是"b"时,它才应该强制。

但CCD_ 2似乎不起作用。

EnumContainer使用类型Literal[MyEnum.B]

class testEnumparsing(BaseModel):
typer: OuterContainer[EnumContainer[Literal[MyEnum.B]]]
class Config:
orm_mode = True

通行证:

obj = testEnumparsing(
typer=OuterContainer(
container=EnumContainer(enum_value=MyEnum.B)
)
)

失败:

obj = testEnumparsing(
typer=OuterContainer(
container=EnumContainer(enum_value=MyEnum.A)
)
)

最新更新