Estoy usando BooleanField en django. De forma predeterminada, la casilla de verificación generada por él es un estado sin marcar, quiero que el estado esté marcado de forma predeterminada, ¿cómo hacerlo?
107
Si solo está utilizando un formulario básico (no un ModelForm), puede establecer un valor inicial de campo ( https://docs.djangoproject.com/en/2.2/ref/forms/fields/#django.forms.Field. inicial ) como
class MyForm(forms.Form):
my_field = forms.BooleanField(initial=True)
Si está utilizando un ModelForm, puede establecer un valor predeterminado en el campo del modelo ( https://docs.djangoproject.com/en/2.2/ref/models/fields/#default ), que se aplicará al ModelForm resultante , me gusta
class MyModel(models.Model):
my_field = models.BooleanField(default=True)
Finalmente, si desea elegir dinámicamente en tiempo de ejecución si su campo se seleccionará o no de forma predeterminada, puede usar el parámetro inicial del formulario cuando lo inicialice :
form = MyForm(initial={'my_field':True})
form = MyForm(initial={'my_field':True})
, no lo encontré de inmediato en la documentación.fuente
initial
en los documentos (para el formulario independiente), pero nodefault
Estoy usando django == 1.11. La respuesta que obtiene la mayor cantidad de votos es realmente incorrecta. Verificando el documento de django, dice:
Y si profundiza en el código del proceso de validación del formulario, encontrará que, para cada campo, el formulario llamará a su widget
value_from_datadict
para obtener el valor real, por lo que este es el lugar donde podemos inyectar el valor predeterminado.Para hacer esto
BooleanField
, podemos heredarCheckboxInput
, anular el valor predeterminadovalue_from_datadict
y lainit
función.Luego use este widget al crear
BooleanField
.fuente
Django 3.0
también. Gracias.En DJango 3.0, el valor predeterminado de un BooleanField en model.py se establece así:
fuente