【发布时间】:2022-10-04 21:32:44
【问题描述】:
我需要一个变量covars,其中包含未知数量的条目,其中每个条目都是三个不同的自定义Pydantic 模型之一。在这种情况下,每个条目都为我的应用程序描述了一个变量。
具体来说,我希望covars 具有以下形式。这里显示了三个条目,即variable1、variable2 和variable3,代表三种不同类型的条目。但是,在部署时,应用程序必须允许接收三个以上的条目,并且并非所有条目类型都需要出现在请求中。
covars = {
'variable1': # type: integer
{
'guess': 1,
'min': 0,
'max': 2,
},
'variable2': # type: continuous
{
'guess': 12.2,
'min': -3.4,
'max': 30.8,
},
'variable3': # type: categorical
{
'guess': 'red',
'options': {'red', 'blue', 'green'},
}
}
我已经成功地将三种不同的条目类型创建为三个独立的Pydantic 模型
import pydantic
from typing import Set, Dict, Union
class IntVariable(pydantic.BaseModel):
guess: int
min: int
max: int
class ContVariable(pydantic.BaseModel):
guess: float
min: float
max: float
class CatVariable(pydantic.BaseModel):
guess: str
options: Set[str] = {}
注意IntVariable 和ContVariable 之间的数据类型差异。
我的问题:如何制作一个Pydantic 模型,该模型允许组合任意数量的IntVariable、ContVariable 和CatVariable 类型的条目以获得我正在寻找的输出?
计划是使用此模型在数据发布到 API 时验证数据,然后将序列化版本存储到应用程序数据库(使用ormar)。
【问题讨论】:
标签: python validation nested fastapi pydantic