Pydantic模型中by_alias转字典后如何反向解包映射字段?
解决方法
方法1:使用Pydantic内置的parse_obj方法
直接调用模型的parse_obj方法传入字典,它会自动识别别名并映射到对应的字段:
data = {"_id": "your-id-value"} obj = ClassWithId.parse_obj(data)
方法2:配置模型允许通过别名赋值
在模型内部添加Config类,开启allow_population_by_field_name选项,这样就可以直接用ClassWithId(**dict)的方式创建实例:
from typing import Optional from pydantic import BaseModel, Field class ClassWithId(BaseModel): id: Optional[str] = Field(None, alias='_id') class Config: allow_population_by_field_name = True # 现在直接解包字典即可 data = {"_id": "your-id-value"} obj = ClassWithId(**data)
allow_population_by_field_name的作用是让模型同时接受字段名(id)和别名(_id)作为参数,两种传参方式都能正确映射到对应的字段。
内容的提问来源于stack exchange,提问作者Alex K.
相关产品推荐
相关产品推荐

