web-dev-qa-db-fra.com

Comment insérer une case à cocher dans un formulaire Django

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?

30
Fred Collins

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.

50
Timmy O'Mahony
class PlanYourHouseForm(forms.ModelForm):

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

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

2
Paul McMillan