Antworten:
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})
from django.db import models
class Foo(models.Model):
any_field = models.BooleanField(default=True)
initialin 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:
initial - Ein Wert, der in der Anfangsanzeige dieses Felds verwendet werden soll. Dieser Wert wird nicht als Fallback verwendet, wenn keine Daten angegeben werden.
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 BooleanFieldZweck können wir von CheckboxInputStandard value_from_datadictund initFunktion erben , diese überschreiben .
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)
Verwenden Sie dann dieses Widget beim Erstellen BooleanField.
class ExampleForm(forms.Form):
bool_field = forms.BooleanField(widget=CheckboxInput(default=True), required=False)
Django 3.0. Vielen Dank.
form = MyForm(initial={'my_field':True}), ich habe es nicht sofort in der Dokumentation gefunden.