Как проверить перечисление в Django с помощью сериализаторов
Я использую сериализаторы для проверки данных Post. Как я могу проверить Enum?
У меня есть такой класс:
class DataTypeEnum(StrEnum):
FLOAT = 'float'
INTEGER = 'integer'
BOOLEAN = 'boolean'
А мой ввод Post содержит
{
...
"value" : <datatype>
...
}
, где value
должен иметь значения float
, integer
или boolean
Django не рекомендует использовать Enum напрямую, подробнее там: https://docs.djangoproject.com/en/5.0/ref/models/fields/#enumeration-types
Но вы можете:
class DataTypeEnum(StrEnum):
FLOAT = 'float'
INTEGER = 'integer'
BOOLEAN = 'boolean'
class DataTypeForm(Form):
value = ChoiceField(choices=((dt.value, dt.name) for dt in DataTypeEnum), required=True)
def clean_value(self):
return DataTypeEnum(self.cleaned_data['value'])
clean_value
необходимо преобразовать обычный текст в один из элементов перечисления.