Как проверить перечисление в 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 необходимо преобразовать обычный текст в один из элементов перечисления.

Вернуться на верх