如何在Django中的表单构造函数中实例化一个复选框?

时间:2016-04-02 16:13:33

标签: django forms checkbox

这是我的代码:

models.py

class CheckModel(models.Model):
    a = models.BooleanField()
    b = models.BooleanField()

forms.py

class CheckForm(forms.Form):
    CHOICES = (('a', 'A',), ('b', 'B'))
    check_form= forms.MultipleChoiceField(required=False,
                                                   choices=CHOICES,
                                                   widget=forms.CheckboxSelectMultiple,
                                                   label='')

views.py

settings = CheckModel.objects.get(pk=1)
a = settings.a
b = settings.b

if request.method == 'GET':
    form = CheckForm(initial = {'a': a, 'b': b}) # <-- doesn't check or uncheck the boxes on GET

最后一个代码是我的问题。如何从我从数据库中获取的变量中选中或取消选中复选框来实例化表单?

1 个答案:

答案 0 :(得分:2)

该字段称为check_form,而不是a或`b;那些是那个领域的价值观。所以你可以这样做:

form = CheckForm(initial = {'check_form': ['a', 'b']})

但是,如果您使用数据库中的数据实例化表单,最好使用ModelForm并在初始化时传入instance参数。