Django: Два независимых выпадающих списка с возможностью поиска с select2 и ajax не работают
Я хотел бы иметь два выпадающих списка с возможностью поиска, которые связаны с двумя различными модалами (Dog & Service). Первый выпадающий список для товаров (модальный список услуг) работает нормально (ожидайте, что у меня нет предварительного просмотра), но второй выпадающий список, который должен быть связан с модальным списком собак, не работает, как ожидалось.
Функция поиска показывает только результаты, которые находятся в другом модале (служебном). Однако если я выбираю один из результатов, то фактический выбор в выпадающем списке равен значению из правильного модала с собакой.
Я уже пытался найти ту же проблему в Интернете, но не смог.
.html
<!-- Searchbox_service linked to Service Modal -->
<form method='post' action='' class="mb-3">
<label class="mb-1">Search service:</label>
<select class="form-select select2" name="searchbox_service" id="searchbox_service">
{% for service in services %}
<option value='{{service.id}}'>{{ service.name }}</option>
{% endfor %}
</select>
</form>
<!-- Searchbox_dog linked to Dog Modal -->
<form method='post' action='' class="mb-3"></form>
<label for="dog" class="form-label">Dog:</label>
<select class="form-select select2" name="searchbox_dog" id="searchbox_dog">
{% for dog in dogs %}
<option value='{{dog.id}}'>{{ dog.dog_name }}</option>
{% endfor %}
</select>
</form>
javascript
urls.py
# Get products AJAX
path("get", views.get_products_ajax_view, name="get_products"),
# Get dogs AJAX
path("get", views.get_dogs_ajax_view, name="get_dogs"),
views.py
def is_ajax(request):
return request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
def get_products_ajax_view(request):
if request.method == 'POST':
if is_ajax(request=request):
data = []
products = Service.objects.filter(
name__icontains=request.POST['term'])
for product in products:
item = product.to_json()
data.append(item)
return JsonResponse(data, safe=False)
def get_dogs_ajax_view(request):
if request.method == 'POST':
if is_ajax(request=request):
data = []
dogs = Dog.objects.filter(
name__icontains=request.POST['term'])
for dog in dogs:
item = dog.to_json()
data.append(item)
return JsonResponse(data, safe=False)