Python 我的表格&x27;s is_valid方法返回false
我有以下表格:Python 我的表格&x27;s is_valid方法返回false,python,django,django-forms,django-views,Python,Django,Django Forms,Django Views,我有以下表格: 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) d
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\u valid
返回false!我已经检查了form.errors
并且它是空的,form.data
是空的,form.is\u 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请求,则需要将post数据传递给表单
if request.method == 'POST':
c = Cook.objects.all()[0]
form = CookDuty(cook=c, data=request.POST)
如果没有post数据,表单将被解除绑定,因此将始终无效
有关更多信息,请参阅上的文档
第二个问题是ChoiceField
字段(用于选择单个选项)与CheckboxSelectMultiple
小部件(用于选择多个选项)不兼容。如果要选择多个选项,则需要使用而不是ChoiceField
duty = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, required=False)
现在它已绑定,但仍然无效。当我打印错误时,我得到以下信息:
- duty
- 选择一个有效的选项。[';比萨饼';]不是可用的选择之一。