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

Вопрос:Я использую BooleanField в django. По умолчанию флажок, созданный им, не установлен, я хочу, чтобы состояние было проверено по умолчанию, как это сделать? Лучший ответ: Если вы просто используете ванильную форму (не ModelForm), вы можете установить начальное значение поля (http://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.Field. начальный) как class MyForm(forms.Form): my_field = forms.BooleanField(initial=True) Если вы используете ModelForm, вы можете установить значение

Вопрос:

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

Лучший ответ:

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

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

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

class MyModel(models.Model): my_field = models.BooleanField(default=True)

Наконец, если вы хотите динамически выбирать во время выполнения, будет ли выбрано ваше поле по умолчанию, вы можете использовать начальный параметр формы при его инициализации:

form = MyForm(initial={‘my_field’:True}) Ответ №1from django.db import models class Foo(models.Model): any_field = models.BooleanField(default=True) Ответ №2from django.db import models class Foo(models.Model): any_field = models.BooleanField(default=True)

Решите мою проблему, мне нужно было использовать в моделях вместо форм

Ответ №3

Я использую 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) Ответ №4

В models.py:

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

Просто введите нужное значение в круглые скобки

Ответ №5from django.db import models class Nepal(models.Model) Is_active = models.BooleanField(default=True)

Оцените статью
Добавить комментарий