Найти - Пользователи
Полная версия: Обновление initial-данных в форме
Начало » Django » Обновление initial-данных в форме
1
chkur
Помогите, а то гугление уже не помогает :) Имеется: Django 1.1.1, dev-server, Opera 10.10, Firefox 3.6.
Есть форма с полем “num_akt”, в котором содержимое устанавливается по умолчанию в вычисляемое значение (номер акта - каждый раз выбирается максимум за текущий год и прибавляется единица).

Последовательность действий:
1. При начальном открытии формы срабатывает нормально. Заполняем форму, сохраняем. Значения записываются в базу.
2. Входим в строку адреса, жмем Enter. Ненужные значения очистились, значение в нужном поле не изменилось(хотя должно было увеличиться на 1).
3. Жмем Enter в строке адреса еще раз - значение меняется (иногда со второго раза).

Кто-нибудь сталкивался с таким поведением? Куда копать?

Форма:
class pidpr_form(ModelForm):
def __init__(self, *args, **kwargs):
if kwargs.has_key('akt_new'):
akt_new = kwargs.pop('akt_new')

super(pidpr_form, self).__init__(*args, **kwargs)
try:
self.base_fields['num_akt'].initial = akt_new
except:
pass

class Meta:
model = pidpr
Вызов из views:
...
формирование akt_n
...
form = pidpr_form(akt_new=akt_n)
...
return render_to_response('pidpr.html',{
'form':form,
})
...
chkur
Пробовал, но значение в форму у меня при такой записи не передается вообще - поле пустое.
Пробовал еще так:
в forms.py
num_akt = forms.IntegerField(min_value=1, max_value=10000, label="Номер акту", initial=akt_n)
В этом случае значение отображается, но при следующем вызове формы после сохранения данных оно не изменяется даже после обновления.

З.Ы. Находил похожее: http://stackoverflow.com/questions/657607/setting-the-selected-value-on-a-django-forms-choicefield - там решения не найдено
chkur
Сорри. Туплю. Надо внимательно читать доки. Для формы ModelForm все работает так:
...формирование akt_n...
init_pidpr = pidpr(num_akt=akt_n)
form = pidpr_form(instance=init_pidpr)
Должно работать с initial или нет - не знаю :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB