django: BooleanField, как установить значение по умолчанию true?



Я использую BooleanField в django. По умолчанию флажок, сгенерированный им, не установлен, я хочу, чтобы состояние было проверено по умолчанию, как это сделать?

664   5  

5 ответов:

Если вы просто используете форму ванили (не ModelForm), вы можете установить начальное значение поля (http://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.Field.initial) нравится

class MyForm(forms.Form):
    my_field = forms.BooleanField(initial=True)

Если вы используете ModelForm, вы можете установить значение по умолчанию в поле model (http://docs.djangoproject.com/en/dev/ref/models/fields/#default ), который будет применяться к результирующей форме модели, например

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)
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_datadict и

в вашем models.py:

Class a(models.model):
   Var = models.BooleanField(default=True)

просто поместите нужное значение в скобки

Comments

    Ничего не найдено.