我有一个模型表单,将ModelMultipleChoiceField
呈现为CheckboxSelectMultiple
class VisitForm(ModelForm):
def __init__(self, queryset=None, *args, **kwargs):
super(VisitForm, self).__init__(*args, **kwargs)
if queryset:
self.fields['students'] = forms.ModelMultipleChoiceField(
queryset=queryset,
widget=forms.CheckboxSelectMultiple()
)
现在在模板中简单地呈现它:
<div class="form-group">
{{field.label}}
{{field}}
</div>
初始化可以选择我期望的选项 - 但默认情况下两个选项都是checked
我正在尝试弄清楚如何初始化这些框,使它们默认为unchecked
。
实现这一目标的最佳方法是什么?
它在view
中初始化为:
visitor = Visitor.objects.get(unique_id=unique_id)
students = Student.objects.filter(parents__unique_id=unique_id)
form = VisitForm(initial={'visitor':visitor, 'students':students}, queryset=students)
答案 0 :(得分:1)
您正在传递students
查询集作为初始数据,因此Django会选择查询集中的每个学生。
您可以使用空的查询集Student.objects.none()
,但从students
词典中删除initial
会更加容易:
form = VisitForm(initial={'visitor':visitor}, queryset=students)