Estoy tratando de restringir un campo en una clase a una enumeración. Sin embargo, cuando trato de sacar un diccionario de la clase, no se convierte en una cadena. En su lugar, conserva la enumeración. Revisé la documentación de pydantic , pero no pude encontrar nada relevante para mi problema.
Este código es representativo de lo que realmente necesito.
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'}Estoy tratando de obtener el método .dict() para devolver {'k': 'am', 'z': 'rrrr'}
Debe usar la opción use_enum_values de la configuración del modelo :
use_enum_valuessi rellenar los modelos con la propiedad de
valuede las enumeraciones, en lugar de la enumeración sin formato. Esto puede ser útil si desea serializarmodel.dict()más tarde (predeterminado: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())