我的 Views.py 中有一个查询,我用它来填充下拉列表。它工作得很好,只是我需要它显示一个特定值,存储在与用户选择相对应的变量中。
假设我们有一个下拉列表,它是使用以下查询从数据库(“world”)填充的:
regions = world.objects.values_list("regions").distinct()
所以这会用区域名称填充我的下拉列表。如果用户之前选择了“欧洲”(存储在 r2 变量中),我如何修改此查询,以便在填写下拉列表后选择“欧洲”?
编辑:
html代码:
<select id="regions" name="r2" onclick="GetSelectedText()" onChange="form.submit();">
{% for item in regions %}
<option val="{{ item.name_reg }}"> {{ item }} </option>
{% endfor %}
</select>
<script type="text/javascript">
function GetSelectedText(){
var r = document.getElementById("regions");
var result_r = r.options[r.selectedIndex].text;
document.getElementById("result_r").innerHTML = result_r;
}
</script>
View .py:
def MyView(request):
result_r = request.POST.get('r2')
print(result_r)
if request.method == 'POST' and result_r != None:
query_results = world.objects.all()
regions = world.objects.values_list("name_reg").distinct()
query_results_dict = {
'query_results': query_results,
'regions': regions,
}
return render(request,'home.html', query_results_dict)
最佳答案
如果您将名为 r2
的 context
变量(假设它与 item.name_reg
的数据类型相同)传递给您的模板,您可以选择带有 ifequal
语句的选项:
<select name="regions" id="regions">
{% for item in regions_list %}
<option val="{{ item.name_reg }}" {% ifequal item.name_reg r2 %}selected{% endif %}> {{ item }} </option>
{% endfor %}
</select>
关于javascript - 在 Django 中填充数据库值后如何为下拉列表指定特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60509967/