回答:
(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からドキュメントをチェックすると、それは言う:
initial-このフィールドの初期表示で使用する値。この値がされていないデータが与えられていない場合のフォールバックとして使用します。
そして、フォーム検証プロセスのコードを掘り下げると、各フィールドについて、フォームが実際の値を取得するためにウィジェットのウィジェット を呼び出すことがわかります。その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})で、ドキュメントにすぐに見つかりませんでした。