Estou usando o BooleanField no django. Por padrão, a caixa de seleção gerada por ele é o estado desmarcado, eu quero que o estado seja verificado por padrão, como fazer isso?
107
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})
form = MyForm(initial={'my_field':True})
, não o encontrei imediatamente na documentação.fonte
initial
na 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:
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 herdarCheckboxInput
, substituir o padrãovalue_from_datadict
e ainit
função.Em seguida, use este widget ao criar
BooleanField
.fonte
Django 3.0
também. Obrigado.No DJango 3.0, o valor padrão de um BooleanField em model.py é definido assim:
fonte