В настоящее время у меня есть рабочий вид поиска, созданный с помощью 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,
})