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

How to map values from nested dict to Pydantic Model?

我正在尝试将一个值从嵌套 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 模型?

您可以自定义 __init__ 您的模型 class:

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'