Відповіді:
Якщо ви просто використовуєте форму ванілі (не ModelForm), ви можете встановити початкове значення поля ( https://docs.djangoproject.com/en/2.2/ref/forms/fields/#django.forms.Field. початковий ) як
class MyForm(forms.Form):
my_field = forms.BooleanField(initial=True)
Якщо ви використовуєте ModelForm, ви можете встановити значення за замовчуванням у полі моделі ( https://docs.djangoproject.com/en/2.2/ref/models/fields/#default ), яке застосовуватиметься до отриманої ModelForm , подібно до
class MyModel(models.Model):
my_field = models.BooleanField(default=True)
Нарешті, якщо ви хочете динамічно вибирати під час виконання, чи буде вибране ваше поле за замовчуванням, ви можете використовувати початковий параметр до форми при ініціалізації :
form = MyForm(initial={'my_field':True})
from django.db import models
class Foo(models.Model):
any_field = models.BooleanField(default=True)
initial
(для незв'язаної форми), але неdefault
Я використовую django == 1,11. Відповідь отримати найбільше голосів насправді неправильна. Перевіряючи документ від django, він говорить:
початковий - значення, яке потрібно використовувати в початковому відображенні цього поля. Це значення не використовується як резервне, якщо дані не наводяться.
І якщо ви заглибитесь у код перевірки форми, ви побачите, що для кожного поля форма викличе, що віджет value_from_datadict
отримає фактичне значення, тому це місце, де ми можемо ввести значення за замовчуванням.
Для цього BooleanField
ми можемо успадкувати CheckboxInput
, переосмислити за замовчуванням value_from_datadict
і init
функціонувати.
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)
Потім використовуйте цей віджет під час створення BooleanField
.
class ExampleForm(forms.Form):
bool_field = forms.BooleanField(widget=CheckboxInput(default=True), required=False)
Django 3.0
також. Дякую.
form = MyForm(initial={'my_field':True})
, що я не знайшов його одразу в документації.