通过Django模板中的SELECT选项检索多个值

时间:2017-12-04 04:49:29

标签: python html django html5 django-views

我正在使用Python(3.6)& Django(1.10)并且需要从下拉选项中选择多个值。

这是我尝试过的: 来自模板:

<select id="slc" name="cluster">
<option value="{{cluster.name}}#{{cluster.zone}}"> {{ cluster.name }}</option>
</select>

来自views.py:

    def post(self, request, *args, **kwargs):
      if request.method == 'POST':
         post_data = request.POST.copy()
         form = forms.ClusterForm(post_data)
         if form.is_valid():
            project = form.cleaned_data['project']
            blocks = request.POST.get('cluster').split('#')

如何获取名称&amp;的价值? 区域。我已经深入了解了现有问题,但无法解决我的问题。所以,请不要将此问题标记为重复,请!

请帮帮我! 提前谢谢!

2 个答案:

答案 0 :(得分:0)

首先更改模板代码,如下所示:

<select id="slc" name="cluster">
<option value="{{cluster.name}}"> {{ cluster.name }}</option>
</select>

然后在视图中:

post_data = request.POST.copy()
cluster_object = Clustermodel.objects.get(name=post_data['cluster'])
post_data['name'] = cluster_object.name
post_data['zone'] = cluster_object.zone
form = forms.ClusterForm(post_data)

我们在这里做的是,我们首先从post发送集群的名称(最好是id),然后在视图中我们获取集群对象,检索名称和区域,并将其包含在post_data中,最后将其传递给表单

答案 1 :(得分:0)

  

建议将id群集作为值发送,并在视图中获取群集对象。

     

<option value="{{cluster.id}}"></option>

您可以使用 javascript 进行此操作,但不能使用Django表单提交,它会始终向您的视图发送value标记的<option>属性。

<select id="slc" name="cluster">
   <option value="{{cluster.id}}" c-name="{{cluster.name}}" c-zone="{{cluster.zone}}" > {{ cluster.name }}</option>
</select>

<script>
    $(function() {
        $("#slc").change(function(){
            var selected_option = $('option:selected', this);
            var cluster_name = selected_option.attr('c-name');
            var cluster_zone = selected_option.attr('c-zone');
        });
    });
</script>

更新

&#13;
&#13;
$("#slc").change(function() {
  var selected_option = $('option:selected', this);
  var cluster_name = selected_option.attr('c-name');
  console.log("cluster_name:", cluster_name);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>

<body>
  <select id="slc">
      <option c-name="volvo" value="1">Volvo</option>
      <option c-name="saab" value="2">Saab</option>
      <option c-name="opel" value="3">Opel</option>
      <option c-name="audi" value="4">Audi</option>
    </select>
</body>

</html>
&#13;
&#13;
&#13;