如何在django表单中插入复选框

时间:2011-06-01 01:46:40

标签: python django django-forms

我有一个设置页面,用户可以选择是否要接收简报。

我想要一个复选框,我希望Django选择它,如果'newsletter'在数据库中是真的。如何在Django中实现?

4 个答案:

答案 0 :(得分:47)

<强> models.py:

class Settings(models.Model):
    receive_newsletter = models.BooleanField()
    # ...

<强> forms.py:

class SettingsForm(forms.ModelForm):
    receive_newsletter = forms.BooleanField()

    class Meta:
        model = Settings

如果您想根据应用中的某些条件自动将receive_newsletter设置为True,则可以在__init__表单中对其进行说明:

class SettingsForm(forms.ModelForm):

    receive_newsletter = forms.BooleanField()

    def __init__(self):
        if check_something():
            self.fields['receive_newsletter'].initial  = True

    class Meta:
        model = Settings

布尔表单字段使用默认CheckboxInput小部件。

答案 1 :(得分:2)

您在表单上使用CheckBoxInput小部件:

https://docs.djangoproject.com/en/dev/ref/forms/widgets/#django.forms.CheckboxInput

如果你直接使用ModelForms,你只想在模型中使用BooleanField。

https://docs.djangoproject.com/en/stable/ref/models/fields/#booleanfield

答案 2 :(得分:2)

class PlanYourHouseForm(forms.ModelForm):

    class Meta:
        model = PlanYourHouse
        exclude = ['is_deleted'] 
        widgets = {
            'is_anything_required' : CheckboxInput(attrs={'class': 'required checkbox form-control'}),   
        }

答案 3 :(得分:0)

您只需在required=False参数上添加forms.BooleanField()