48 votes

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

J'ai une page de paramètres où les utilisateurs peuvent choisir s'ils souhaitent recevoir une newsletter ou non.

Je veux une case à cocher pour cela, et je veux que Django la sélectionne si 'newsletter' est vrai dans la base de données. Comment puis-je implémenter dans Django ?

78voto

Timmy O'Mahony Points 23071

models.py :

 class Settings(models.Model):
    receive_newsletter = models.BooleanField()
    # ...

form.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 comptez 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 de formulaire booléen utilise un widget CheckboxInput par défaut .

4voto

Mahadev Points 31
class PlanYourHouseForm(forms.ModelForm):

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

-2voto

Vous pouvez simplement ajouter required=False sur vos arguments forms.BooleanField() .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X