Respostas:
Se você estiver usando apenas um formulário vanilla (não um ModelForm), você pode definir um valor inicial de campo ( https://docs.djangoproject.com/en/2.2/ref/forms/fields/#django.forms.Field. inicial ) gosto
class MyForm(forms.Form):
my_field = forms.BooleanField(initial=True)
Se estiver usando um ModelForm, você pode definir um valor padrão no campo do modelo ( https://docs.djangoproject.com/en/2.2/ref/models/fields/#default ), que se aplicará ao ModelForm resultante , gostar
class MyModel(models.Model):
my_field = models.BooleanField(default=True)
Finalmente, se você deseja escolher dinamicamente no tempo de execução se o seu campo será ou não selecionado por padrão, você pode usar o parâmetro inicial para o formulário ao inicializá-lo :
form = MyForm(initial={'my_field':True})
from django.db import models
class Foo(models.Model):
any_field = models.BooleanField(default=True)
initialna documentação (para forma não vinculada), mas nãodefault
Estou usando o django == 1.11. A resposta para obter a maioria dos votos está realmente errada. Verificando o documento do Django, ele diz:
inicial - um valor a ser usado na exibição inicial deste campo. Este valor não é usado como fallback se os dados não forem fornecidos.
E se você cavar no código do processo de validação do formulário, você descobrirá que, para cada campo, o formulário irá chamar seus widgets value_from_datadict para obter o valor real, então este é o lugar onde podemos injetar o valor padrão.
Para fazer isso BooleanField, podemos herdar CheckboxInput, substituir o padrão value_from_datadicte a initfunção.
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)
Em seguida, use este widget ao criar BooleanField.
class ExampleForm(forms.Form):
bool_field = forms.BooleanField(widget=CheckboxInput(default=True), required=False)
Django 3.0também. Obrigado.
form = MyForm(initial={'my_field':True}), não o encontrei imediatamente na documentação.