我有如下表格:
class CookDuty(forms.Form ):
# cook = None
def __init__(self, *args, **kwargs):
cook = kwargs.pop('cook')
super(CookDuty, self).__init__(*args, **kwargs)
self.fields['duty'].choices = foods_for_cook(cook)
duty = forms.ChoiceField(widget=forms.CheckboxSelectMultiple, required=False)
我在以下视图中使用了它,但是form.is_valid
返回false!我已经检查过了form.errors
,它是空的,form.data
是空的,并且form.is_bound是False
。
def duty_list_cook(request):
if request.method == 'POST':
c = Cook.objects.all()[0]
form = CookDuty(cook=c)
if form.is_valid():
print(form.cleaned_data)
return render(request, 'employee/cook_duty.html', {'form':form})
else:
c = Cook.objects.all()[0]
form = CookDuty(cook=c)
return render (request, 'employee/cook_duty.html', {'form':form})
如果是发布请求,则需要将POST数据传递到表单。
if request.method == 'POST':
c = Cook.objects.all()[0]
form = CookDuty(cook=c, data=request.POST)
没有过帐数据,该表单是未绑定的,因此将始终无效。
有关更多信息,请参见有关绑定和非绑定表单的文档。
第二个问题是该ChoiceField
字段(用于选择一个选项)与CheckboxSelectMultiple
小部件(用于选择多个选项)不兼容。如果要选择多个选项,则需要使用MultipleChoiceField
代替ChoiceField
。
duty = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, required=False)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句