如何在 model_dump() 期间将 pydantic serialization_alias 设置为默认值。
from pydantic import BaseModel, Field
class ProjectStage(BaseModel):
name: dict[str, int] = Field(..., serialization_alias="Username")
class Config:
pass
a = ProjectStage(name={'foo': 1})
常规方式
output: {'Username': {'foo': 1}}
print(a.model_dump(by_alias=True))
将 by_alias 设置为基础模型配置中的默认值
Expected output: {'Username': {'foo': 1}}
print(a.model_dump())
对于正在寻找解决方案的每个人。您可以创建另一个类来继承并重写 model_dump() 函数
from pydantic import BaseModel, Field
class DefaultDump(BaseModel):
def model_dump(self, **kwargs) -> dict[str, Any]:
return super().model_dump(by_alias=True, **kwargs)
class ProjectStage(DefaultDump):
name: dict[str, int] = Field(..., serialization_alias="Username")
a = ProjectStage(name={'foo': 1})
# Output: {'Username': {'foo': 1}}
print(a.model_dump())