답변:
바닐라 양식 (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})
, 문서에서 바로 찾지 못했습니다.