gpt4 book ai didi

python - Pydantic Enum 加载名称而不是值

转载 作者:行者123 更新时间:2023-12-05 08:04:37 25 4
gpt4 key购买 nike

我有一个枚举类:

class Group(enum.Enum):
user = 0
manager = 1
admin = 2

我有一个迂腐的模型:

class User(BaseModel):
id: int
username: str
group: Group

它生成序列化为 json 如下:

{
"id": 5,
"username": "admin",
"group": 2
}

但是,我想获取枚举字段的名称而不是它的值,所以它应该是:

{
"id": 5,
"username": "admin",
"group": "admin"
}

这可能吗?如果是,怎么办?

最佳答案

pydantic Github 中,我发现了一个解决这个问题的讨论:Map string value to int #598

samuelcolvin 建议:

class Choices(int, Enum):
anne = 1
ben = 2
charlie = 3
dave = 4

@classmethod
def __get_validators__(cls):
cls.lookup = {v: k.value for v, k in cls.__members__.items()}
yield cls.validate

@classmethod
def validate(cls, v):
try:
return cls.lookup[v]
except KeyError:
raise ValueError('invalid value')

class Model(BaseModel):
choice: Choices

debug(Model(choice='charlie'))

关于python - Pydantic Enum 加载名称而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67911340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com