Django MultipleChoiceField 对选择元组的限制
Django MultipleChoiceField restrictions on choices tuple
当我尝试将 MultipleChoiceField 与 CheckboxSelectMultiple 小部件一起使用时,我收到一条错误消息。我使用 Django 的 MultipleChoiceField 构建了一个表单,它为用户显示一组复选框 select:
class CheckBoxForm(forms.Form):
def __init__(self,*args,**kwargs):
arg_list = kwargs.pop('arg_list')
section_label = kwargs.pop('section_label')
super(CheckBoxForm,self).__init__(*args,**kwargs)
self.fields['box_ID'].choices=arg_list
print arg_list
self.fields['box_ID'].label=section_label
box_ID = forms.MultipleChoiceField(required=True, widget=forms.CheckboxSelectMultiple)
视图如下所示:
sat_list = (
('a','SAT1'),
('b','SAT2')
)
if request.method == 'POST':
form_scID = CheckBoxForm(request.POST,arg_list=sat_list,section_label="Please Select Satelites")
if form_scID.is_valid():
scID = form_scID.cleaned_data['box_ID']
return HttpResponse("Satellite: {sat}".format(sat=scID,type=taskType))
else:
form_scID = CheckBoxForm(arg_list=sat_list,section_label="Please Select Satelites")
return render(request, 'InterfaceApp/schedule_search.html', {'form3': form_scID})
当我尝试这样做时,出现错误:局部变量 'scID' 在赋值之前被引用,但是当我使用数字作为第一个元素设置选择元组时它起作用了,如下所示:
sat_list = (('1','SAT1'),('2','SAT2'))
为什么我必须将第一个元素设置为数字才能起作用?
表格不必是唯一的。调用时可以为表单指定前缀:
form_1 = DataTypeForm(request.POST or None,initial_value=True,prefix="1")
form_2 = DataTypeForm(request.POST or None,initial_value=False,prefix="2")
当我尝试将 MultipleChoiceField 与 CheckboxSelectMultiple 小部件一起使用时,我收到一条错误消息。我使用 Django 的 MultipleChoiceField 构建了一个表单,它为用户显示一组复选框 select:
class CheckBoxForm(forms.Form):
def __init__(self,*args,**kwargs):
arg_list = kwargs.pop('arg_list')
section_label = kwargs.pop('section_label')
super(CheckBoxForm,self).__init__(*args,**kwargs)
self.fields['box_ID'].choices=arg_list
print arg_list
self.fields['box_ID'].label=section_label
box_ID = forms.MultipleChoiceField(required=True, widget=forms.CheckboxSelectMultiple)
视图如下所示:
sat_list = (
('a','SAT1'),
('b','SAT2')
)
if request.method == 'POST':
form_scID = CheckBoxForm(request.POST,arg_list=sat_list,section_label="Please Select Satelites")
if form_scID.is_valid():
scID = form_scID.cleaned_data['box_ID']
return HttpResponse("Satellite: {sat}".format(sat=scID,type=taskType))
else:
form_scID = CheckBoxForm(arg_list=sat_list,section_label="Please Select Satelites")
return render(request, 'InterfaceApp/schedule_search.html', {'form3': form_scID})
当我尝试这样做时,出现错误:局部变量 'scID' 在赋值之前被引用,但是当我使用数字作为第一个元素设置选择元组时它起作用了,如下所示:
sat_list = (('1','SAT1'),('2','SAT2'))
为什么我必须将第一个元素设置为数字才能起作用?
表格不必是唯一的。调用时可以为表单指定前缀:
form_1 = DataTypeForm(request.POST or None,initial_value=True,prefix="1")
form_2 = DataTypeForm(request.POST or None,initial_value=False,prefix="2")