在Django中用数据库值填充下拉列表后如何给它一个特定的值?
Posted
技术标签:
【中文标题】在Django中用数据库值填充下拉列表后如何给它一个特定的值?【英文标题】:How to give a dropdown a specific value after filling it with database values in Django? 【发布时间】:2020-03-03 14:57:10 【问题描述】:我的 Views.py 中有一个用于填充下拉列表的查询。它工作得很好,除了我需要它显示一个特定的值,存储在一个与用户选择相对应的变量中。
假设我们有一个使用以下查询从数据库(“世界”)填充的下拉列表:
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>
Views.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)
【问题讨论】:
您应该更新您的问题并添加代码的相关部分,您可以在其中将查询集中的值呈现到下拉小部件中。你是使用forms
还是直接在html模板中渲染?
好吧,我认为这很简单,这就是我没有这样做的原因。无论如何,我刚刚编辑了我的问题。如果您需要更多详细信息,请告诉我。
保存预选值的变量是什么? query_results_dict
字典中没有 sel_region
变量。
我的错,只是用实际变量 r2 替换它。
【参考方案1】:
如果您将一个名为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>
【讨论】:
我认为这会起作用,但不幸的是没有。每次提交表单时,它都是被选中的下拉列表的首选。知道如何解决这个问题吗? 我不得不用 'item' 替换 'item.name_reg': 现在可以了,谢谢。以上是关于在Django中用数据库值填充下拉列表后如何给它一个特定的值?的主要内容,如果未能解决你的问题,请参考以下文章