Django-filter. Выражение поиска не работает должным образом
Когда я использую MultipleChoiceFilter
с lookup_expr='iexact'
, похоже, что параметры по-прежнему чувствительны к регистру и возвращается Select a valid choice
. Что я делаю неправильно?
Это мой класс фильтра:
class PostFilter(filters.FilterSet):
lang = filters.MultipleChoiceFilter(
field_name='language', choices=[('ENG', 'ENG'), ('DEU', 'DEU')], lookup_expr='iexact')
class Meta:
fields = ('lang',)
model = Post
Запрос: posts/?lang=eng&lang=deu
Ответ: Select a valid choice. eng is not one of the available choices.
Моя БД: PostgreSQL 14
Ваш запрос должен быть posts/?lang=ENG&lang=DEU
, так как сначала значения будут проверяться на соответствие определению в классе фильтра. lookup_expr='iexact'
будет использоваться позже для поиска в базе данных. Если вы хотите использовать значения в нижнем регистре, вам придется изменить свой выбор на choices=[('eng', 'ENG'), ('deu', 'DEU')]
.