Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 19, 2008 11:10:31

<<AlexLis>>
От:
Зарегистрирован: 2008-08-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

save() формы

есть форма:

class ReportForm(forms.Form):
out_request = forms.DateTimeField(widget=AdminSplitDateTime,initial=datetime.datetime.now)
action_problem = forms.CharField()
remark = forms.CharField( max_length=300,required=False)
и есь view:
def reportform(request):
if request.method == 'POST':
form = ReportForm(request.POST)
if form.is_valid():
new_form = form.save(commit=False)
new_form.save()
return HttpResponseRedirect('/report/')
else:
form = ReportForm()
return render_to_response('project_db/reportform.html', {'form': form})
На попытку сохранеиня пишет:
'ReportForm' object has no attribute ‘save’.
я так понимаю нужно определить метод save в ReportForm?
Если да,топочему в доке об этом ничего не сказанно:(



Офлайн

#2 Авг. 19, 2008 11:25:54

redixin
От:
Зарегистрирован: 2006-11-27
Сообщения: 66
Репутация: +  1  -
Профиль   Отправить e-mail  

save() формы

а почему бы не сделать просто

if form.is_valid():
new_form = form.save()



Офлайн

#3 Авг. 19, 2008 11:28:12

<<AlexLis>>
От:
Зарегистрирован: 2008-08-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

save() формы

redixin
а почему бы не сделать просто
if form.is_valid():
new_form = form.save()
пробовал и так,все равно выдает ‘ReportForm’ object has no attribute ‘save’



Офлайн

#4 Авг. 19, 2008 11:43:51

redixin
От:
Зарегистрирован: 2006-11-27
Сообщения: 66
Репутация: +  1  -
Профиль   Отправить e-mail  

save() формы

ой, торможу.. тут save() быть и не может, это есть только у http://www.djangoproject.com/documentation/modelforms/



Офлайн

#5 Авг. 19, 2008 11:53:27

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

save() формы

<<AlexLis>>
Пользуйтесь BB разметкой для выделения кода, пожалуйста. Надоело уже править.

И да, у обычной формы нет метода save(). Да и куда ему, если бы был, сохранять дынный вообще, вы подумали?



Офлайн

#6 Авг. 19, 2008 11:56:22

<<AlexLis>>
От:
Зарегистрирован: 2008-08-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

save() формы

А не могли бы вы приветси пример save() для моей формы?заранее спаибо



Офлайн

#7 Авг. 19, 2008 17:13:28

securelord
От:
Зарегистрирован: 2006-08-31
Сообщения: 129
Репутация: +  0  -
Профиль   Отправить e-mail  

save() формы

<<AlexLis>>

form = ReportForm(request.POST)
if form.is_valid():
f= Report(out_request = form.cleaned_data['out_request'],
action_problem = form.cleaned_data['action_problem'],
remark = form.cleaned_data['remark']).save()
При условии что поля формы такие же как поля модели(названия)


Что то вроде этого



Отредактировано (Авг. 20, 2008 10:26:33)

Офлайн

#8 Авг. 20, 2008 09:57:08

max
От:
Зарегистрирован: 2008-04-21
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

save() формы

Не, ну зачем же из формы form, являющейся инстансом ReportForm, делать новый инстанс ReportForm f? Наверное есть модель Report, тогда:

form = ReportForm(request.POST)
if form.is_valid():
r= Report(out_request = form.cleaned_data['out_request'],
action_problem = form.cleaned_data['action_problem'],
remark = form.cleaned_data['remark']).save()
Правильно я говору?



Отредактировано (Авг. 20, 2008 09:59:56)

Офлайн

#9 Авг. 20, 2008 10:27:33

securelord
От:
Зарегистрирован: 2006-08-31
Сообщения: 129
Репутация: +  0  -
Профиль   Отправить e-mail  

save() формы

max

Сорри, хотел написать одно, получилось другое. Это все “copy-paste” виноват :)



Офлайн

#10 Авг. 20, 2008 11:04:28

<<AlexLis>>
От:
Зарегистрирован: 2008-08-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

save() формы

Хм..поблему решил,но по-моему не оптимально..gередаю в форму id редактируемой записи.
form.py

class ReportForm(forms.Form):
out_request = forms.DateTimeField(widget=AdminSplitDateTime,initial=datetime.datetime.now)
action_problem = forms.CharField()
remark = forms.CharField(required=False)

view.py

def reportform(request,pk):
pid = int(pk)
p = Log_Book.objects.get(id=pid)
if request.method == ‘POST’:
form = ReportForm(request.POST)
if form.is_valid():
p.out_request = form.cleaned_data
p.action_problem = form.cleaned_data
p.remark = form.cleaned_data
p.who_corrected = getfio(request.user)
p.check_off = ‘1’
p.save()
return HttpResponseRedirect('/myrequest/')
else:
form = ReportForm()
return render_to_response('project_db/reportform.html', {'form': form,'pk': p.id})



def report(request):
try:
p = Log_Book.objects.get(id=request.POST)
except (KeyError,Log_Book.DoesNotExist):
p = Log_Book.objects.all().filter(check_off='2', who_corrected=getfio(request.user))
return render_to_response('project_db/myrequest.html', {
‘log_books’: p,
‘username’:getfio(request.user),
‘error_message’: “You didn't select a choice.”
})

else:
f= ReportForm()
return render_to_response('project_db/reportform.html', {'form': f, ‘pk’: p.id})



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version