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

如何不使用别名创建Pydantic对象并为对应字段赋值

解决方案

如果你使用的是Pydantic V2(当前主流版本)

在模型的配置项中开启populate_by_name=True即可,开启后同时支持原字段名、别名两种传参方式。
示例代码如下:

from pydantic import BaseModel, Field

class Params(BaseModel):
    var_name: int = Field(alias='var_alias')
    # 新增配置项
    model_config = {
        "populate_by_name": True
    }

# 两种方式都可以正常运行
Params(var_alias=5) 
Params(var_name=5) 

你也可以用ConfigDict的写法实现相同效果:

from pydantic import BaseModel, Field, ConfigDict

class Params(BaseModel):
    model_config = ConfigDict(populate_by_name=True)
    var_name: int = Field(alias='var_alias')

如果你使用的是Pydantic V1

对应的配置参数为allow_population_by_field_name = True,用法如下:

from pydantic import BaseModel, Field

class Params(BaseModel):
    var_name: int = Field(alias='var_alias')

    class Config:
        allow_population_by_field_name = True

# 两种传参方式都生效
Params(var_alias=5)
Params(var_name=5)

补充说明

  • 开启上述配置后,默认导出模型数据时返回的键还是原字段名,如果需要导出别名对应的键,调用model_dump(by_alias=True)(V2)或者dict(by_alias=True)(V1)即可。
  • 如果仅需要临时用原字段名传参不想修改全局配置,也可以调用模型的model_construct方法初始化,不过更推荐全局加配置的方式,适配性更强。

内容的提问来源于stack exchange,提问作者Erysol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:54:03