如何使serialization_alias成为Pydantic BaseModel中的默认行为

问题描述 投票:0回答:1

如何在 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())
python pydantic
1个回答
0
投票

对于正在寻找解决方案的每个人。您可以创建另一个类来继承并重写 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())
© www.soinside.com 2019 - 2024. All rights reserved.