我有一个枚举类:
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'))
https://stackoverflow.com/questions/67911340/
相关文章:
reactjs - 当将组件作为函数调用而不是将其用作标签时,React 没有相同的执行顺序?
node.js - 在 NodeJs 中使用 Docker-compose 热重载
java - 打开Feign java.lang.NoSuchFieldError : MULTIP
android - 如何更改android studio中的默认主题?
typescript - 如何强制两种类型在 TypeScript 中不兼容?
git - 如何让 Git 在 Windows 上的 RStudio 中打开提交消息?
python - odoo 13 定制多家公司的产品和供应商
mysql - Spring Boot、Java、Docker Compose,尝试在两个容器(my