Есть ли способ, которым я могу отфильтровать по любому из х в django запрос - PullRequest
1 голос
/ 17 марта 2020

В моем веб-приложении я бы хотел, чтобы пользователь мог фильтровать результаты поиска, выбирая категории на боковой панели .

Запрос данных GET в представлении извлекает список выбранных параметров и анализируется. Эти данные для фильтрации затем разделяются на списки, как показано в следующем фрагменте из Index в views.py:

class Index(View):
    def get(request):
        ... some checks to ensure its a valid request...
        if valid:
            dietTypeList = request.GET.getlist('diettype[]') #['meat','vegetarian',...] 
            categoryList = request.GET.getlist('categories[]') #['Italian','Western',...]
            ....
            return render(request,'results.html',context_dict)
        ....

Затем я хотел бы отфильтровать результаты в функции фильтра .filter(), чтобы мои результаты относятся к любой из выбранных категорий, причем к этим категориям применен любой тип питания.

Я изучил Q вопросов, но не уверен, как в любом случае сделать следующее. Как эффективно выполнить следующее:

results = Recipe.objects.filter(Q(name__contains=searchCriteria) & Q(category=any of categoryTypeList ))

1 Ответ

2 голосов
/ 17 марта 2020

Простой способ создать фильтр, чтобы увидеть, является ли категория членом набора категорий, - это использовать форму с двойным подчеркиванием name__in для поиска в полях, как в

results = Recipe.objects.filter(category__in=some_set_of_categories)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...