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())


以上是Pydantic枚举字段未转换为字符串的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>