Pydantic枚举字段未转换为字符串
我试图将类中的一个字段限制为枚举。但是,当我尝试从课堂上获取字典时,它不会转换为字符串。相反,它保留了枚举。我检查了pydantic 文档,但找不到与我的问题相关的任何内容。
这段代码代表了我真正需要的东西。
from enum import Enum
from pydantic import BaseModel
class S(str, Enum):
am='am'
pm='pm'
class K(BaseModel):
k:S
z:str
a = K(k='am', z='rrrr')
print(a.dict()) # {'k': <S.am: 'am'>, 'z': 'rrrr'}
我试图让 .dict() 方法返回 {'k': 'am', 'z': 'rrrr'}
回答
您需要使用模型配置use_enum_values选项:
use_enum_values是否使用
value枚举的属性填充模型,而不是原始枚举。如果要还原序列化,这可能是有用的model.dict()后(默认值:False)
from enum import Enum
from pydantic import BaseModel
class S(str, Enum):
am='am'
pm='pm'
class K(BaseModel):
k:S
z:str
class Config:
use_enum_values = True # <--
a = K(k='am', z='rrrr')
print(a.dict())