Ich benutze BooleanField in Django. Standardmäßig ist das von ihm generierte Kontrollkästchen deaktiviert. Ich möchte, dass der Status standardmäßig aktiviert ist. Wie geht das?
106
Wenn Sie nur ein Vanilleformular (kein ModelForm) verwenden, können Sie einen Feldanfangswert festlegen ( https://docs.djangoproject.com/de/2.2/ref/forms/fields/#django.forms.Field). initial ) wie
class MyForm(forms.Form):
my_field = forms.BooleanField(initial=True)
Wenn Sie eine ModelForm verwenden, können Sie einen Standardwert für das Modellfeld festlegen ( https://docs.djangoproject.com/de/2.2/ref/models/fields/#default ), der für die resultierende ModelForm gilt , mögen
class MyModel(models.Model):
my_field = models.BooleanField(default=True)
Wenn Sie zur Laufzeit dynamisch auswählen möchten, ob Ihr Feld standardmäßig ausgewählt werden soll, können Sie den Initialparameter für das Formular verwenden, wenn Sie es initialisieren :
form = MyForm(initial={'my_field':True})
form = MyForm(initial={'my_field':True})
, ich habe es nicht sofort in der Dokumentation gefunden.quelle
initial
in den Dokumenten (für ungebundene Form), aber nichtdefault
Ich benutze django == 1.11. Die Antwort, die die meisten Stimmen erhält, ist tatsächlich falsch. Beim Überprüfen des Dokuments von Django heißt es:
Wenn Sie sich mit dem Code der Formularüberprüfung befassen, werden Sie feststellen, dass das Formular für jedes Feld das Widget aufruft
value_from_datadict
, um den tatsächlichen Wert zu erhalten. Dies ist also der Ort, an dem wir den Standardwert einfügen können.Zu diesem
BooleanField
Zweck können wir vonCheckboxInput
Standardvalue_from_datadict
undinit
Funktion erben , diese überschreiben .Verwenden Sie dann dieses Widget beim Erstellen
BooleanField
.quelle
Django 3.0
. Vielen Dank.In DJango 3.0 wird der Standardwert eines BooleanField in model.py folgendermaßen festgelegt:
quelle