J'utilise BooleanField dans django. Par défaut, la case à cocher générée par elle est un état décoché, je veux que l'état soit coché par défaut, comment faire?
107
Si vous utilisez simplement un formulaire vanille (pas un ModelForm), vous pouvez définir une valeur initiale Field ( https://docs.djangoproject.com/en/2.2/ref/forms/fields/#django.forms.Field. initial ) comme
class MyForm(forms.Form):
my_field = forms.BooleanField(initial=True)
Si vous utilisez un ModelForm, vous pouvez définir une valeur par défaut sur le champ de modèle ( https://docs.djangoproject.com/en/2.2/ref/models/fields/#default ), qui s'appliquera au ModelForm résultant , comme
class MyModel(models.Model):
my_field = models.BooleanField(default=True)
Enfin, si vous souhaitez choisir dynamiquement à l'exécution si votre champ sera sélectionné par défaut ou non, vous pouvez utiliser le paramètre initial du formulaire lorsque vous l' initialisez :
form = MyForm(initial={'my_field':True})
form = MyForm(initial={'my_field':True})
, je ne l'ai pas trouvé tout de suite dans la documentation.la source
initial
dans la documentation (pour la forme non liée), mais pasdefault
J'utilise django == 1.11. La réponse à obtenir le plus de votes est en fait fausse. En vérifiant le document de django, il est dit:
Et si vous creusez dans le code du processus de validation du formulaire, vous constaterez que, pour chaque champ, le formulaire appellera son widget
value_from_datadict
pour obtenir la valeur réelle, c'est donc l'endroit où nous pouvons injecter la valeur par défaut.Pour ce faire
BooleanField
, nous pouvons hériter deCheckboxInput
, remplacer la valeur par défautvalue_from_datadict
et lainit
fonction.Utilisez ensuite ce widget lors de la création
BooleanField
.la source
Django 3.0
aussi. Merci.Dans DJango 3.0, la valeur par défaut d'un BooleanField dans model.py est définie comme ceci:
la source