【问题标题】:Organize data with pydantic使用 pydantic 组织数据
【发布时间】:2021-02-27 06:38:30
【问题描述】:

我正在使用 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 设置对象的值,但出现错误。坦克。

【问题讨论】:

    标签: python fastapi pydantic


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 有没有办法将数据转换成pydantic?我问是因为我无法从源头更改数据。
    • 修改答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2013-12-14
    • 1970-01-01
    • 2012-06-15
    • 2012-03-19
    • 1970-01-01
    • 2021-08-03
    相关资源
    最近更新 更多