如何将嵌套字典中的值映射到 Pydantic 模型?

时间:2021-03-10 18:38:55

标签: python pydantic

我正在尝试将嵌套的 dict/json 中的值映射到我的 Pydantic 模型。对我来说,当我的 json/dict 具有扁平结构时,这很有效。但是,我正在努力将值从嵌套结构映射到我的 Pydantic 模型。

假设我有以下格式的 json/dict:

d = {
"p_id": 1,
"billing": {
    "first_name": "test"
}

另外,我有一个具有两个属性的 Pydantic 模型:

class Order(BaseModel):
    p_id: int
    pre_name: str

如何将键 first_name 中的值映射到我的 Pydantic 属性 pre_name

是否有一种简单的方法而不是使用 root_validator 将给定的结构解析为我的平面 pydantic 模型?

1 个答案:

答案 0 :(得分:1)

您可以自定义模型类的 __init__

from pydantic import BaseModel

d = {
    "p_id": 1,
    "billing": {
        "first_name": "test"
    }
}


class Order(BaseModel):
    p_id: int
    pre_name: str

    def __init__(self, **kwargs):
        kwargs["pre_name"] = kwargs["billing"]["first_name"]
        super().__init__(**kwargs)


print(Order.parse_obj(d))  # p_id=1 pre_name='test'