我在 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 -->部分(这只是为了引起注意这个变化)。
