У меня есть это поле:
operation = models.CharField(max_length=10, choices=OPERATIONS)
Наличие этого фильтра работает:
class OperationFilter(django_filters.Filter):
def filter(self, qs, value):
try:
qs = qs.filter(operation=value.upper())
except:
pass
return qs
С URL:
/api/v1/operation/?operation=CREATE
Но использование фильтра по умолчанию (без дополнительного OperationFilter
) завершается неудачно с:
{
"operation": [
"Select a valid choice. %(value)s is not one of the available choices."
]
}
Почему фильтр на поле с вариантами выбора не работает?
Для других полей без выбора фильтры по умолчанию работают нормально:
/api/v1/operation/?recipient=recipient-19
EDIT
OPERATIONS
:
from enum import Enum
def enum_as_choices(enum_class):
"""From an enum class, generate choices for a django field"""
return ((entry, entry.value) for entry in enum_class)
class OperationType(Enum):
CREATE = 'CREATE'
STATUS = 'STATUS'
EXPAND = 'EXPAND'
DELETE = 'DELETE'
OPERATIONS = enum_as_choices(OperationType)