Я написал функцию представлений для поиска / фильтрации моих данных в django на основе определенных параметров. В полях категорий и местоположений пользователь может выбрать несколько параметров для поиска.
Моя функция просмотра выглядит следующим образом:
def search(request):
queryset_list = Influencer.objects.order_by('-followers').distinct().values('id',
'full_name','username','photo','email_id','location_city','categories__name','website')
# Username
if 'username' in request.GET:
username = request.GET['username']
if username:
queryset_list = queryset_list.filter(username__icontains=username)
#Full Name
if 'fullname' in request.GET:
fullname = request.GET['fullname']
if fullname:
queryset_list = queryset_list.filter(full_name__icontains=fullname)
# Location
if 'location' in request.GET:
location = request.GET['location']
for i in location:
queryset_list = queryset_list.filter(location_city__icontains=i)
# Categories
if 'categories' in request.GET:
categories = request.GET['categories']
if categories:
queryset_list = queryset_list.filter(categories__name__iexact=categories)
Функция поиска должна возвращать данные всех категорий и местоположений, по которым производится поиск. Например, если выполняется поиск местоположений Дели и Мумбаи, то он должен вернуть всех тех Влиятельных людей, которые имеют свое местоположение как Дели или Мумбаи, то же самое относится и к категориям.
Функция поиска отлично работает для отдельных значений, но не работает для нескольких значений. Например, если Дели отправляется в категории местоположения, то он возвращает правильные результаты, но если Дели, Мумбаи выбран, он считывает только первое значение, то есть Дели, и соответственно применяет фильтр.
Как мне изменить поисковый запрос, чтобы он работал правильно?