我有一个设置页面,用户可以选择是否要接收简报。
我想要一个复选框,我希望Django选择它,如果'newsletter'在数据库中是真的。如何在Django中实现?
答案 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()
。