如何从 Django 的下拉列表中从用户的选定选项中进行查询
Posted
技术标签:
【中文标题】如何从 Django 的下拉列表中从用户的选定选项中进行查询【英文标题】:How to make a query from a selected choice from the user from a drop-down list in Django 【发布时间】:2022-01-06 21:20:26 【问题描述】:我是新来的。在实习环境中,我必须开发一个网站,用户将有机会在其中选择他想在热图中可视化的程序、本地化或主题。
为此,我决定使用 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)
<div class="md-5 mt-5">
<p class="mt-2 text-center"> Select a site </p>
<select class = "form-select" method = "get" aria-label = "Default select example" action="showResult">
% for nom in showname %
<option value = "lieu.id" name = "site_name" method="get" id="select_site"> name.localisation </option>
% endfor %
</select>
</div>
我的问题是featured_filter
是一个空的查询集。那么我可以从 html 接口中获取选定的值到我的 python 代码中吗?
感谢您的帮助!
【问题讨论】:
【参考方案1】:我不太明白你到底想要什么,但我会给你一系列提示,看看它们是否能帮助你:
1 - 如果您需要连接两个数据库表,您可以使用多对多关系 (Documentation)
2 - 这个问题可能最好用表单和 POST 方法来解决:
-
用户选择选项
使用 POST 方法发送表单
运行执行过滤的函数
该函数通过上下文返回结果并重新渲染 HTML。
3 - 如果您不想使用表单,您可以创建自定义模板标签和 javascript。这种方法比较复杂,不推荐。 (Custom template tag) (InnerHTML Javascript)
【讨论】:
以上是关于如何从 Django 的下拉列表中从用户的选定选项中进行查询的主要内容,如果未能解决你的问题,请参考以下文章