Установка значения по умолчанию для поля в наборе форм в Django - PullRequest
0 голосов
/ 07 декабря 2010

В наборе форм в Django, как мы можем установить значение по умолчанию для поля, которому нужно значение из сеанса http?Поскольку для получения значения требуется сеанс, мы не можем установить значение по умолчанию в самом классе модели.И я не могу понять, как явно установить значение в каждой форме в наборе форм перед сохранением в функции представления.

Установка начального атрибута в конструкции FormSet будет работать, но по какой-то причине яполучить ошибку компиляции.Код выглядит так:

formset = LineItemsInlineFormSet(initial=[{'updated_by':'user'}])

Ошибка компиляции: init () получил неожиданный аргумент ключевого слова 'initial'

Я использую Django 1.1.1

Любое понимание будет оценено.Заранее спасибо.

1 Ответ

1 голос
/ 07 декабря 2010

Идиома создания экземпляра набора форм с начальными данными:

data = {
     'form-TOTAL_FORMS': u'2',
     'form-INITIAL_FORMS': u'0',
     'form-MAX_NUM_FORMS': u'',
     'form-0-updated_by': u'user',
     'form-1-updated_by': u'user',
}

formset = LineItemsInlineFormSet(data)

Обновление:

Как заметил Джонни Бьюкенен , этот подход дает вам связанный набор форм,который будет отображать ошибки проверки, если все необходимые данные не предоставлены.Если это не то, что вам нужно, создайте свой набор форм , передав пользовательскую форму с желаемыми настройками django.forms.formsets.formset_factory().

Обычно updated_by задается в качестве текущего вошедшего в систему пользователя. автоматически при обновлении .Если это то, что вы хотите:

  1. пропустите поле updated_by в форме;
  2. save() с commit=False, если это ModelFormset;
  3. установить updated_by для текущего пользователя;и
  4. сохранить экземпляры объекта, теперь со значением по умолчанию commit=True.

На сайте администратора есть удобный способ сделать это с помощью встроенных функций: переопределить ModelAdmin.save_formset.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...