验证并获取 django 表单未知数量的多个选择复选框字段
Validate and get django form's unkown number of multipleselect checkbox fields
我正在尝试将所有选中的复选框值作为列表获取,但由于选择选项无法验证表单
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.
有没有一种方法可以避免选择验证并仍然将所有帐户复选框的值作为列表检查?我怎么说它允许任何选择?如果我可以在没有表单验证的情况下获得列表,那也很好。
如果您不关心验证,为什么要调用 is_valid
?事实上,你为什么要使用 Form class 呢?您没有使用它来显示表单,所以您最好完全不使用它,只从 request.POST.getlist('accounts')
.
获取数据
我正在尝试将所有选中的复选框值作为列表获取,但由于选择选项无法验证表单
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.
有没有一种方法可以避免选择验证并仍然将所有帐户复选框的值作为列表检查?我怎么说它允许任何选择?如果我可以在没有表单验证的情况下获得列表,那也很好。
如果您不关心验证,为什么要调用 is_valid
?事实上,你为什么要使用 Form class 呢?您没有使用它来显示表单,所以您最好完全不使用它,只从 request.POST.getlist('accounts')
.