J'ai une page de paramètres où les utilisateurs peuvent sélectionner s'ils souhaitent recevoir une newsletter ou non.
Je veux une case à cocher pour cela, et je veux que Django sélectionnez-la si "newsletter" est vrai dans la base de données. Comment puis-je l'implémenter dans Django?
models.py:
class Settings(models.Model):
receive_newsletter = models.BooleanField()
# ...
forms.py:
class SettingsForm(forms.ModelForm):
receive_newsletter = forms.BooleanField()
class Meta:
model = Settings
Et si vous souhaitez définir automatiquement receive_newsletter
à True
selon certains critères de votre candidature, vous en tenez compte dans les formulaires __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
Le champ du formulaire booléen utilise un widget CheckboxInput
par par défaut.
class PlanYourHouseForm(forms.ModelForm):
class Meta:
model = PlanYourHouse
exclude = ['is_deleted']
widgets = {
'is_anything_required' : CheckboxInput(attrs={'class': 'required checkbox form-control'}),
}
Vous utilisez un widget CheckBoxInput sur votre formulaire:
https://docs.djangoproject.com/en/dev/ref/forms/widgets/#Django.forms.CheckboxInput
Si vous utilisez directement ModelForms, vous voulez simplement utiliser un BooleanField dans votre modèle.
https://docs.djangoproject.com/en/stable/ref/models/fields/#booleanfield