Django: AJAX код, необходимый для зависимых выпадающих - PullRequest
0 голосов
/ 04 марта 2020

Поскольку я новичок в Django и совершенно не знаю JS / AJAX, я пытаюсь закодировать наиболее простой способ, зависящий от выпадающих списков. Мне удалось заполнить мои выпадающие списки значениями из моей базы данных (data_immo). Теперь мне нужно обновить второй выпадающий список после выбора пользователя в первом.

Вот мой дом. html файл с двумя раскрывающимися списками (регионы и департаменты):

<select name="regions" id="regions">
  {% for item in query_results_dict %}
  <option value={{ item.nom_reg }}>{{ item.nom_reg }}</option>
  {% endfor %}
</select>

<select name="departements" id="departements">
  {% for item in departements %}
  <option val="{{ item.insee_dep }}"> {{ item.insee_dep }} </option>    
  {% endfor %}
</select>

views.py:

def MyView(request):

    query_results = data_immo.objects.all()
    regions = data_immo.objects.values_list("nom_reg", flat=True).distinct()
    departements = data_immo.objects.values_list("insee_dep", flat=True).distinct()

    query_results_dict = {
        'query_results': query_results,
        'regions': regions,
        'departements': departements,
    }

    return render(request,'home.html', query_results_dict)

models.py :

class data_immo(models.Model):
    id = models.AutoField(primary_key=True)
    insee_dep = models.IntegerField(db_column='INSEE_DEP', blank=True, null=True) 
    nom_reg = models.TextField(db_column='NOM_REG', blank=True, null=True)  

    class Meta:
        managed = True
        db_table = 'immo'

Насколько я понимаю, мне нужно извлечь выбранное значение из выпадающего списка "регионов" и использовать функцию onChange, чтобы вызвать действие, которое будет использовать эту переменную, и проверить базу данных, чтобы только соответствующие совпадения были выбран. К сожалению, я не знаю, как поступить. Я знаю, что есть несколько примеров, но ни один из них не был действительно удовлетворительным, и те, которые я попробовал, потерпели неудачу из-за моего недостатка знаний JS / AJAX. Дайте мне знать, если нужно больше деталей.

РЕДАКТИРОВАТЬ 1: добавлен models.py; Кроме того, веб-сайт, который был рекомендован в комментариях, имеет значения, хранящиеся в разных таблицах, тогда как у меня все они в одной и той же. Конечно, это должно повлиять на мой код и не может быть реплицировано само по себе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...