10
votes

Case à cocher présélectionné dans Django avec Django Formulaires

J'essaie d'afficher une case à cocher présélectionnée dans django : xxx

mais la case apparaît non cochée. J'utilise django 1.3 bêta . Est-ce que je manque quelque chose ici?


2 commentaires

J'ai le même problème, seulement je construis une forme dynamique, ajoutant des champs à l'intérieur de mes formulaires init .


Est-ce un modelform? Si vous passez dans une instance, l'instance peut remplacer la valeur de l'option.


3 Réponses :


12
votes
import django
from django import forms

class MyForm(forms.Form):
     option = forms.BooleanField(required=False, initial=True)

>>>print MyForm()
<tr><th><label for="id_option">Option:</label></th><td><input checked="checked" type="checkbox" name="option" id="id_option" /></td></tr>
>>> django.VERSION
(1, 3, 0, 'beta', 1)
>>> 
As you can see the checked="checked" is properly set.Are you sure you are not modifying something with onload javascript ?

1 commentaires

Non je ne modifie rien avec JavaScript. Et aucune option = formes.boolfield (requis = false, initiale = true), ne fonctionne pas.



6
votes

Définissez le champ Attributs:

  options = forms.MultipleChoiceField(label='some label',  choices=(('happy','Happy'),('sad','Sad')),
      widget=forms.CheckboxSelectMultiple(attrs={'checked' : 'checked'}))


0 commentaires

1
votes

Essayez:

option = forms.BooleanField(
            widget=forms.CheckboxInput(attrs={'checked': True})
        )


2 commentaires

Bonjour et bienvenue à Stackoverflow! Ajoutez quelques détails supplémentaires à votre réponse autres que le code. Cela aiderait les autres mieux à comprendre.


Bien que ce code puisse résoudre la question, y compris une explication de la manière et pourquoi cela résout le problème aiderait vraiment à améliorer la qualité de votre poster et aboutit probablement à plus de votes ultérieurs. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, pas seulement la personne qui demande maintenant. S'il vous plaît Modifier Votre réponse Pour ajouter des explications et donner une indication de quelles limitations et hypothèses s'appliquent.