Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 28, 2010 00:33:04

chkur
От:
Зарегистрирован: 2010-01-07
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Обновление initial-данных в форме

Помогите, а то гугление уже не помогает :) Имеется: 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,
})
...



Отредактировано (Фев. 28, 2010 08:57:23)

Офлайн

#2 Фев. 28, 2010 08:56:55

chkur
От:
Зарегистрирован: 2010-01-07
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Обновление initial-данных в форме

Пробовал, но значение в форму у меня при такой записи не передается вообще - поле пустое.
Пробовал еще так:
в 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 - там решения не найдено



Отредактировано (Фев. 28, 2010 09:00:06)

Офлайн

#3 Фев. 28, 2010 11:13:54

chkur
От:
Зарегистрирован: 2010-01-07
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Обновление initial-данных в форме

Сорри. Туплю. Надо внимательно читать доки. Для формы ModelForm все работает так:

...формирование akt_n...
init_pidpr = pidpr(num_akt=akt_n)
form = pidpr_form(instance=init_pidpr)
Должно работать с initial или нет - не знаю :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version