小编twh*_*hes的帖子

区分具有相同字段的 Pydantic 模型

我使用 Pydantic 定义分层数据,其中存在具有相同属性的模型。

但是,当我保存和加载这些模型时,Pydantic 无法再区分使用了哪个模型,并选择字段类型注释中的第一个模型。

我知道这是基于文档的预期行为。但是,类类型信息对我的应用程序很重要。

在 Pydantic 中区分不同类的推荐方法是什么?一种技巧是简单地向其中一个模型添加一个无关的字段,但我想找到一种更优雅的解决方案。

请参阅下面的简化示例:container使用 类型的数据进行初始化DataB,但在导出和加载之后,newcontainer具有类型的数据DataA,因为它是 类型声明中的第一个元素container.data

感谢您的帮助!

from abc import ABC
from pydantic import BaseModel #pydantic 1.8.2
from typing import Union

class Data(BaseModel, ABC):
    """ base class for a Member """
    number: float

class DataA(Data):
    """ A type of Data"""
    pass

class DataB(Data):
    """ Another type of Data """
    pass

class Container(BaseModel):
    """ container holds a subclass of Data """
    data: Union[DataA, …
Run Code Online (Sandbox Code Playgroud)

python abc pydantic

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

abc ×1

pydantic ×1

python ×1