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

Posted

技术标签:

【中文标题】如何在 Django 表单中插入复选框【英文标题】:How to insert a checkbox in a django form 【发布时间】:2011-09-05 22:17:50 【问题描述】:

我有一个设置页面,用户可以在其中选择是否要接收时事通讯。

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

【问题讨论】:

【参考方案1】:

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 小部件。

【讨论】:

【参考方案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

【讨论】:

这总体上是一个更好的答案。编写和使用 django 的内置对象的代码更少。【参考方案3】:
class PlanYourHouseForm(forms.ModelForm):

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

【讨论】:

【参考方案4】:

您可以在 forms.BooleanField() 参数上添加 required=False

【讨论】:

这不会填充任何内容。

以上是关于如何在 Django 表单中插入复选框的主要内容,如果未能解决你的问题,请参考以下文章

如何在Django的视图功能中访问Django模板中表单中的复选框[关闭]

django 表单:如何检查模板中的复选框状态

单击表单复选框并传递复选框布尔值时如何在Django中刷新view.py?

如何从 django 表单库中隐藏复选框并使用 Javascript 切换其显示属性

如何知道是不是选中了表单中的多个复选框并将值插入数据库表c#

如何使用 python-docx 将复选框表单插入 .docx 文件?