Respuestas:
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})
from django.db import models
class Foo(models.Model):
any_field = models.BooleanField(default=True)
initialen 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:
inicial: un valor para usar en la pantalla inicial de este campo. Este valor no se utiliza como respaldo si no se proporcionan datos.
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 heredar CheckboxInput, anular el valor predeterminado value_from_datadicty la initfunción.
class CheckboxInput(forms.CheckboxInput):
def __init__(self, default=False, *args, **kwargs):
super(CheckboxInput, self).__init__(*args, **kwargs)
self.default = default
def value_from_datadict(self, data, files, name):
if name not in data:
return self.default
return super(CheckboxInput, self).value_from_datadict(data, files, name)
Luego use este widget al crear BooleanField.
class ExampleForm(forms.Form):
bool_field = forms.BooleanField(widget=CheckboxInput(default=True), required=False)
Django 3.0también. Gracias.
form = MyForm(initial={'my_field':True}), no lo encontré de inmediato en la documentación.