Как сделать запрос на основе выбранного пользователем варианта из выпадающего списка в Django

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

Для этого я решил использовать Django. Я столкнулся с 2 проблемами :

  • Первая: у меня есть база данных mysql, состоящая из 1 таблицы с названиями локаций (подробными во многих колонках) и координатами, и одной таблицы по программам с необработанными данными. Мне нужно найти способ объединить эти две таблицы, но одно название локализации может иметь разные координаты в зависимости от программы. Поэтому мне нужно объединить 2 колонки по таблице (2 колонки из необработанных данных, которые я соединяю с двумя колонками из таблицы с координатами)

На данный момент я думал об использовании new_var = table.objects.annotate но я не могу соединить две новые переменные... Есть ли у вас какие-нибудь идеи ?

  • Второе: пользователь должен выбрать локализацию из выпадающего списка, который я могу использовать для фильтрации моей базы данных и отображения карты по его желанию.

На данный момент у меня есть это :

(views.py)

''' def map(request):

m = folium.Map(location=[-17.4889,-149.90017], zoom_start=11, tiles='CartoDB Dark_Matter', control_scale=(True))

if request.method == 'GET':

    featured_filter = request.GET.get('site_name')

    if request.GET.get('nom_site'):

        data_list = table.objects.filter(localisation = featured_filter).values_list('latitude', 'longitude', 'proportion')

else :

    data_list = table.objects.all().values_list('latitude', 'longitude', 'proportion')

plugins.HeatMap(data_list).add_to(m)

m = m._repr_html_()

context = {

    'm': m,

    "showname": name}

return render(request, 'map.html', context)

'''

(map.html)

Выберите участок {% for nom in showname %} {{name.localisation}} {% endfor %}

Моя проблема в том, что "featured_filter" - это пустой QuerySet. Так могу ли я получить выбранное значение из html интерфейса в мой код на python ?

Спасибо за помощь!

Я не очень хорошо понимаю, чего именно вы хотите, но я дам вам ряд советов, чтобы посмотреть, смогут ли они вам помочь:

1 - Если вам нужно соединить две таблицы базы данных, вы можете использовать отношения многие-ко-многим (Документация)

2 - Возможно, с этой проблемой лучше столкнуться с помощью формы и метода POST:

  1. Пользователь выбирает опцию
  2. Отправьте форму методом POST
  3. Запустите функцию, выполняющую фильтрацию
  4. Функция возвращает результат через контекст и повторный рендеринг HTML.

3 - Если вы не хотите использовать формы, вы можете создать пользовательский шаблон тегов и JavaScript. Этот метод более сложный, поэтому я не рекомендую его использовать. ( Пользовательский тег шаблона) (InnerHTML Javascript)

Вернуться на верх