验证并获取django表单的多个选择复选框字段的未知数量

时间:2016-09-13 16:06:25

标签: python django forms django-forms checkboxlist

我正在尝试将所有选中的复选框值作为列表,但由于选项选项无法验证表单

forms.py:

class MarkAccountsForm(forms.Form):
    accounts = forms.MultipleChoiceField(
        widget = forms.CheckboxSelectMultiple,
        required = False
    )

模板:

{% for account in accounts %}
    <tr>
        <td><input type="checkbox" name="accounts" value="{{ account.id }}"></td>
        <td>{{ account.name }}</td>
    </tr>
{% endfor %}

views.py:

if request.method == 'POST':
    form = MarkAccountsForm(request.POST)
    if form.is_valid(): #this fails
        data = form.cleaned_data

当我尝试打印form.errors时,它会显示Select a valid choice. 1119 is not one of the available choices.

有没有办法可以避免选择验证,仍然可以将所有帐户的值复选框作为列表进行检查?我怎么说它允许任何选择?如果我可以在没有表单验证的情况下获得列表,那么这也很好。

1 个答案:

答案 0 :(得分:1)

如果您不关心验证,为什么要拨打is_valid?实际上,你为什么要使用Form类呢?您没有使用它来显示表单,因此您可以将其完全删除,只需从request.POST.getlist('accounts')获取数据。