Как использовать вид поиска Django с множественным выбором Select2, который показывает значения GET с оператором + между - PullRequest
0 голосов
/ 01 мая 2020

В настоящее время у меня есть рабочий вид поиска, созданный с помощью Django и мультиселектора Select2 на передней панели. Когда форма отправлена, я получаю ?Query=Value1 в URL, который работает нормально, она ищет мою модель, и я получаю желаемый результат.

Проблема в том, что выбрано несколько значений. Я получаю это в URL ?Query=value1&Query=Value2. В этом сценарии выполняется поиск только последнего значения. Я хочу, чтобы оба значения искались (с эквивалентом оператора AND между).

Я добавил форму поиска и Django форму поиска ниже. Если вам нужно что-нибудь еще, дайте мне сейчас.

Форма поиска в передней части

       <form id="makeitso" role="search" action="" method="get">                   
                <select class="js-example-placeholder-multiple" name="query" multiple="multiple">
                    <option value="Value 1">Value 1</option>   
                    <option value="Value 2">Value 2</option>   
                    <option value="Value 3">Value 3</option>     
                </select>

                   <script>
                       $(".js-example-placeholder-multiple").select2({
                           placeholder: "Search here",
                       });
                   </script>

           <div class="form-inline justify-content-center">
               <button type="submit"  class="btn btn-xlarge">Search</button>
           </div>
       </form>

views.py

        def search(request):
            search_query = request.GET.get('query', None)
            page = request.GET.get('page', 1)

            # Search
            if search_query:
                search_results = TestPage.objects.live().search(search_query)
                query = Query.get(search_query)

                # Record hit
                query.add_hit()
            else:
                search_results = TestPage.objects.none()

            # Pagination
            paginator = Paginator(search_results, 3)
            try:
                search_results = paginator.page(page)
            except PageNotAnInteger:
                search_results = paginator.page(1)
            except EmptyPage:
                search_results = paginator.page(paginator.num_pages)

            return render(request, 'search/search.html', {
                'search_query': search_query,
                'search_results': search_results,
            })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...