Задать вопрос
@iGyry
Backend developer

Как в django сделать значение формы по умолчанию?

Модель:
class MyModel(models.Model):
    enterprise = models.ForeignKey(Enterprise, verbose_name=_(u'Предприятие'), unique=True)
    retry = models.PositiveIntegerField(verbose_name=_(u'Количество попыток'), default=0)
    delay = models.PositiveIntegerField(verbose_name=_(u'Задержка между попытками, с'), default=1)

Форма:
class MyModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModelForm, self).__init__(*args, **kwargs)
        self.fields['retry'].required = False
        #не работает
        #self.fields['retry'].initial = 1

    #тоже не работает
    #delay = forms.IntegerField(label=_(u"title"), initial=1, required=False)

    class Meta:
        model = MyModel
        fields = ('enterprise', 'retry', 'delay')

Вот моя форма, нужно, что бы при открытии формы в полях "retry" и "delay" уже должны быть числа. Я честно не понимаю как ещё можно это сделать. У меня что самое странно required работает, а initial не работает
  • Вопрос задан
  • 3116 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Либо определить значения по умолчанию в модели
class MyModel(models.Model):
   retry = models.PositiveSmallIntegerField(default=1)
   ...

либо передать в конструктор формы соответствующий экземпляр модели
form = MyModelForm(instance=MyModel.objects.first())

либо передать в конструктор формы начальные значения полей
form = MyModelForm(initial={'retry': 1, 'delay': 2})

Всё это подробно описано в документации.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы