用 pydantic 组织数据

Organize data with pydantic

我正在使用 fastapi 创建一个 api,我需要在 pydantic 中调整输出对象,但我没有得到它。我的代码:

class Obj1(BaseModel):
    d:str = None
    e:str = None

class Obj(BaseModel):
    a:int = None
    b:str = None
    c:Obj1 = None

data = {'a': 1, 'b': 'b', 'd': 'd', 'e':'e'}

obj = Obj(**data)

这样我就失去了d和e的值

Obj(a=1, b='b', c=None)

预期值为

Obj(a=1, b='b', c=Obj1(d='d', e='e'))

pydantic 中有什么方法可以用来正确转换数据吗?我尝试使用 root_validator 来设置对象的值,但出现了错误。坦克.

给定的 data 字典与定义的模型不匹配,这一个将匹配:

data = {'a': 1, 'b': 'b', 'c': {'d': 'd', 'e': 'e'}}

默认情况下 pydantic 忽略额外的属性,您可以简单地这样做:

obj = Obj(**data, c=Obj1(**data))