Поля фильтра django + пользовательское поле Q
Я пытаюсь использовать обычные поля фильтра с несколькими полями поиска. Если я помещаю просто
fields = [`q`]
или
fields = {
'model': ['icontains'],
'type' : ['icontains'],
}
тогда он работает, но если я пытаюсь использовать их вместе, он не работает. Как мне заставить это работать?
filter.py
class CustomFilter(django_filters.FilterSet):
q = django_filters.CharFilter(method='custom_search_filter',label="Title & Tag Search")
class Meta:
model = CustomModel
fields = {
'model': ['icontains'],
'type' : ['icontains'],
['q']
}
def custom_search_filter(self, queryset, name, value):
return queryset.filter(
Q(title__icontains=value) | Q(tag__icontains=value)
)
Вы вообще не помещаете декларативно объявленный фильтр в Meta. Meta - это способ позволить инициализации фильтра создать шаблон для общих случаев.
Попробуйте просто удалить ['q'], т.е.
fields = {
'model': ['icontains'],
'type' : ['icontains'],
}