Pydantic模型字段异常:tag_uid赋值后仍为None问题求助
问题原因
当你给tag_uid字段设置alias="tagUid"后,Pydantic默认仅识别别名tagUid作为传入参数的键。用原字段名tag_uid传参时,Pydantic不会将该值映射到对应字段,导致字段使用默认值None。
解决方法
有两种实用的解决方式:
方式1:开启allow_population_by_field_name配置
在Config类中添加allow_population_by_field_name = True,让Pydantic同时支持原字段名和别名传参:
from typing import Optional from pydantic import BaseModel, Field class UploadResult(BaseModel): reference: str tag_uid: Optional[int] = Field(default=None, alias="tagUid") class Config: arbitrary_types_allowed = True allow_population_by_field_name = True # 新增配置 # 两种传参方式均生效 result1 = UploadResult(reference='b07b2068fe523c849cddb3dddf9d55fcb109bc5d302ef726738cfc3d83cb6b29', tag_uid=123) print(result1.tag_uid) # 输出 123 result2 = UploadResult(reference='b07b2068fe523c849cddb3dddf9d55fcb109bc5d302ef726738cfc3d83cb6b29', tagUid=123) print(result2.tag_uid) # 输出 123
方式2:直接使用别名传参
如果不需要兼容原字段名传参,直接用定义的别名tagUid实例化类即可:
result = UploadResult(reference='b07b2068fe523c849cddb3dddf9d55fcb109bc5d302ef726738cfc3d83cb6b29', tagUid=123) print(result.tag_uid) # 输出 123
内容的提问来源于stack exchange,提问作者Saikat Karmakar
相关产品推荐
相关产品推荐

