Risposte:
Se stai usando solo un modulo vaniglia (non un ModelForm), puoi impostare un valore iniziale del campo ( https://docs.djangoproject.com/en/2.2/ref/forms/fields/#django.forms.Field. iniziale ) come
class MyForm(forms.Form):
my_field = forms.BooleanField(initial=True)
Se stai utilizzando un ModelForm, puoi impostare un valore predefinito nel campo del modello ( https://docs.djangoproject.com/en/2.2/ref/models/fields/#default ), che verrà applicato al ModelForm risultante , piace
class MyModel(models.Model):
my_field = models.BooleanField(default=True)
Infine, se desideri scegliere dinamicamente in fase di esecuzione se il tuo campo sarà selezionato per impostazione predefinita, puoi utilizzare il parametro iniziale del modulo quando lo inizializzi :
form = MyForm(initial={'my_field':True})
from django.db import models
class Foo(models.Model):
any_field = models.BooleanField(default=True)
initialnei documenti (per il modulo non associato), ma nondefault
Sto usando django == 1.11. La risposta che ottiene il maggior numero di voti è effettivamente sbagliata. Controllando il documento da django, dice:
iniziale - Un valore da utilizzare nella visualizzazione iniziale di questo campo. Questo valore non viene utilizzato come riserva se i dati non vengono forniti.
E se approfondisci il codice del processo di convalida del modulo, scoprirai che, per ogni campo, il modulo chiamerà il suo widget value_from_datadict per ottenere il valore effettivo, quindi questo è il posto in cui possiamo inserire il valore predefinito.
Per farlo BooleanField, possiamo ereditare da CheckboxInput, sovrascrivere default value_from_datadicte initfunzione.
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)
Quindi usa questo widget durante la creazione BooleanField.
class ExampleForm(forms.Form):
bool_field = forms.BooleanField(widget=CheckboxInput(default=True), required=False)
Django 3.0anche per . Grazie.
form = MyForm(initial={'my_field':True}), non l'ho trovato subito nella documentazione.