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

azo*_*o91 12 python pydantic

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

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

d = {
    "p_id": 1,
    "billing": {
        "first_name": "test"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

class Order(BaseModel):
    p_id: int
    pre_name: str
Run Code Online (Sandbox Code Playgroud)

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

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

ale*_*ame 15

您可以自定义__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'
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的方法吗?或者正在做这种不好的做法...... (3认同)