programing

django : BooleanField, 기본값을 true로 설정하는 방법은 무엇입니까?

nasanasas 2020. 8. 29. 11:10
반응형

django : BooleanField, 기본값을 true로 설정하는 방법은 무엇입니까?


django에서 BooleanField를 사용하고 있습니다. 기본적으로 생성되는 확인란은 선택되지 않은 상태입니다. 기본적으로 상태를 선택하고 싶습니다. 어떻게해야합니까?


바닐라 양식 (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)

django == 1.11을 사용하고 있습니다. 가장 많은 표를 얻은 대답은 실제로 잘못되었습니다. django에서 문서를 확인하면 다음과 같이 말합니다.

initial-이 필드의 초기 표시에 사용할 값입니다. 이 값이되어 있지 데이터가 주어지지 않는 경우, 대체로서 사용된다.

그리고 양식 유효성 검사 프로세스의 코드를 자세히 살펴보면 각 필드에 대해 양식이 실제 값을 얻기 위해 위젯 이라고 부르는 것을 value_from_datadict알 수 있습니다. 그래서 여기가 기본값을 주입 할 수있는 곳입니다.

에서이를 수행하려면 BooleanField에서 상속하고 CheckboxInput기본값 value_from_datadictinit기능을 재정의 할 수 있습니다 .

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)

from django.db import models

class Nepal(models.Model)
     Is_active = models.BooleanField(default=True)

참고 URL : https://stackoverflow.com/questions/5190313/django-booleanfield-how-to-set-the-default-value-to-true

반응형