使用CheckboxSelectMultiple小部件对ModelChoiceField表单进行django单元测试

时间:2016-08-26 15:29:45

标签: django django-forms django-admin django-views

我有一张表格

class TypesForm(forms.Form):
  ....    
  types = forms.ModelChoiceField(
  label='Types',
  queryset=models.Type.objects.all(),
  widget=forms.CheckboxSelectMultiple)
  ...

当我想测试多个选定框时,如何为此表单编写单元测试?

对于一个字段检查的工作如下:

form = forms.TypesForm({'types': 1})
self.assertTrue(form.is_valid())

但是我试图设置两个选中的复选框,它会导致错误:

{'types': [u'Select a valid choice. That choice is not one of the available choices.']}

我试过,但这些都行不通。例如。 :

form = forms.TypesForm({'types': [1, 2]})

form = forms.TypesForm({'types': (1, 2)})

和其他选项..

对于forms.ModelForm,列表[1,2]有效,所以需要有一种方法。

1 个答案:

答案 0 :(得分:2)

self.frame.width允许您选择单个对象。如果要允许选择多个对象,请使用ModelMultipleChoiceField

在单元测试中,传递字段的ID列表,例如:

ModelChoiceField