如何在 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中刷新view.py?
如何从 django 表单库中隐藏复选框并使用 Javascript 切换其显示属性