在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】:

如果您将一个名为r2context 变量(假设它与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中用数据库值填充下拉列表后如何给它一个特定的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫中用空列表[]填充数据框Nan值?

如何通过从另一个下拉列表中选择值来填充下拉列表?

Laravel-从下拉列表中选择值后自动填充输入

如何从mysql数据库填充下拉列表并且不应该重复值

如何使用基于另一个下拉值填充下拉列表

如何使用flutter Dropdown小部件从Django REST API端点填充数据