Saya menggunakan BooleanField di django. Secara default kotak centang yang dihasilkan olehnya adalah status tidak dicentang, saya ingin status dicentang secara default, bagaimana melakukannya?
107
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})
form = MyForm(initial={'my_field':True})
, saya tidak langsung menemukannya di dokumentasi.sumber
initial
di dokumen (untuk formulir tidak terikat), tetapi tidakdefault
Saya menggunakan django == 1.11. Jawaban mendapatkan suara terbanyak sebenarnya salah. Memeriksa dokumen dari django, dikatakan:
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 fromCheckboxInput
, override defaultvalue_from_datadict
daninit
function.Kemudian gunakan widget ini saat membuat
BooleanField
.sumber
Django 3.0
juga. Terima kasih.Di DJango 3.0 nilai default dari BooleanField di model.py disetel seperti ini:
sumber