Jawaban:
Jika Anda hanya menggunakan formulir vanilla (bukan ModelForm), Anda dapat menyetel nilai awal Bidang ( https://docs.djangoproject.com/en/2.2/ref/forms/fields/#django.forms.Field. awal ) seperti
class MyForm(forms.Form):
my_field = forms.BooleanField(initial=True)
Jika Anda menggunakan ModelForm, Anda dapat menyetel nilai default pada bidang model ( https://docs.djangoproject.com/en/2.2/ref/models/fields/#default ), yang akan diterapkan ke ModelForm yang dihasilkan , Suka
class MyModel(models.Model):
my_field = models.BooleanField(default=True)
Terakhir, jika Anda ingin secara dinamis memilih pada waktu proses apakah bidang Anda akan dipilih secara default atau tidak, Anda dapat menggunakan parameter awal ke formulir saat Anda menginisialisasinya :
form = MyForm(initial={'my_field':True})
from django.db import models
class Foo(models.Model):
any_field = models.BooleanField(default=True)
initialdi dokumen (untuk formulir tidak terikat), tetapi tidakdefault
Saya menggunakan django == 1.11. Jawaban mendapatkan suara terbanyak sebenarnya salah. Memeriksa dokumen dari django, dikatakan:
inisial - Nilai yang akan digunakan dalam tampilan awal Bidang ini. Nilai ini tidak digunakan sebagai fallback jika data tidak diberikan.
Dan jika Anda menggali kode proses validasi formulir, Anda akan menemukan bahwa, untuk setiap bidang, formulir akan memanggilnya widget value_from_datadict untuk mendapatkan nilai sebenarnya, jadi di sinilah kita dapat memasukkan nilai default.
Untuk melakukan ini BooleanField, kita dapat mewarisi from CheckboxInput, override default value_from_datadictdan initfunction.
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)
Kemudian gunakan widget ini saat membuat BooleanField.
class ExampleForm(forms.Form):
bool_field = forms.BooleanField(widget=CheckboxInput(default=True), required=False)
Django 3.0juga. Terima kasih.
form = MyForm(initial={'my_field':True}), saya tidak langsung menemukannya di dokumentasi.