Используйте предложение OR вместо AND в django-filter
Я работаю с django-filter + django rest framework. Я хочу искать термин с помощью выражения OR. У меня есть такой фильтр:
class ItemFilter(filters.FilterSet):
name = filters.CharFilter(field_name="name")
barcode = filters.CharFilter(field_name="barcode")
class Meta:
model = Item
fields = ['name', 'barcode']
когда я отправляю параметр запроса типа https://url?barcode=q&name=q django-filter searchs:
SELECT * FROM item where name = 'q' AND barcode = 'q'
Как настроить поиск?:
SELECT * FROM item where name = 'q' OR barcode = 'q'
Одним из вариантов может быть использование SearchFilter
в вашем представлении для фильтрации по нескольким полям:
from rest_framework import filters
class YourView(generics.ListAPIView):
queryset = Item.objects.all()
serializer_class = ...
filter_backends = [filters.SearchFilter]
search_fields = ['name', 'barcode']
А затем используйте ключевое слово search
в параметрах запроса url:
https://url?search=q