Skip to main content
 首页 » 编程设计

python之Django之将多项选择字段传递到 POST 字典中

2024年08月15日39soundcode

我在 forms.py 文件中生成了一个 queryset,该文件传递到我的 template。模板结果是一个基于查询集的多选字段。 Web 浏览器的显示是正确的 - 它将查询集呈现为一个下拉选项列表,我可以从中进行选择。

这是模板代码:

<tr><td>{{ form.jury_name | placeholder:'Jury Name' }}</td></tr> 
<tr><td><select> 
    {% for item in form.parent_jury.field.queryset %} 
        <option name="parent_jury" value="{{ item }}">{{ item }}</option> 
    {% endfor %} 
</select></td></tr> 

这一切都包含在一个表中。

当 form 被提交时 (method = "POST") POST 字典中除了 parent_jury 键,发布值 ''。

我已经在 views.py 方面完成了几个 SO 解决方案,但它们并没有改变一个事实,即 clean() 可用的信息是缺少 'parent_jury' 的选择字段值。如何从列表中获取所选选项以附加到 'parent_jury' 键?

请您参考如下方法:

我认为您呈现的 HTML 不是它应该的样子:name="..."应该是 <select> 的一部分标记,不是 <option>s :

<tr><td>{{ form.jury_name | placeholder:'Jury Name' }}</td></tr> 
<tr><td><select<b> name="parent_jury"</b>> 
    {% for item in form.parent_jury.field.queryset %} 
        <!-- remove the name here --> 
        <option value="{{ item }}">{{ item }}</option> 
    {% endfor %} 
</select></td></tr>

(当然你可以删除<!-- comment -->部分(这只是为了引起注意这个变化)。