You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 00:02:08