从django下拉列表中发送多个值

时间:2017-05-18 11:00:42

标签: django

我有一个带有下拉菜单的django表单

<form action="/dir/" method="POST">{% csrf_token %}
    <table>
      <tr><td>
        <select name="listxblocks">
          {% for scname, desc in scenarios %}
          <!--<option value="{% url "workbench_show_scenario" scname %}">{{desc}}/{{scname}}</option>-->
          <option value="{{scname}}">{{desc}}/{{scname}}</option>

          {% endfor %}

        </select>

        </td>
    <td></td></tr>
    </table>
    <input type="submit" value="Save"/>
</form>

我目前在提交表单时传递了一个值 scname ,我需要传递两个值 scname desc 并稍后访问它们

如何发送这两个值

3 个答案:

答案 0 :(得分:1)

希望它能奏效。您可以从JSON传递option字符串,并在django视图中将json string转换为json object

<option value="{'desc': {{desc}}, 'scname': {{scname}} }">{{desc}}/{{scname}}</option>

然后在你的Django视图函数

import json
blocks = json.loads(request.POST.get('listxblocks'))
desc = blocks['desc']
scname = blocks['scname']

答案 1 :(得分:1)

当我需要解压缩两个值时,我用已知的分隔符写两个:

<option name value="{{desc}}#{{scname}}">{{desc}}/{{scname}}</option>

然后在你的观点中:

foo = request.POST.get('listxblocks').split('#')
desc = foo[0]
scname = foo[1]

答案 2 :(得分:0)

如果需要更简单的形式,也可以使用json数组:

<option value='[ "{{desc}}", "{{scname}}" ]'>{{desc}}/{{scname}}</option>

这将被序列化为Python列表:

my_list = json.loads(request.POST.get('option'))
print(my_list[0])
print(my_list[1])