<<AlexLis>>
Авг. 19, 2008 11:10:31
есть форма:
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?
Если да,топочему в доке об этом ничего не сказанно:(
redixin
Авг. 19, 2008 11:25:54
а почему бы не сделать просто
if form.is_valid():
new_form = form.save()
<<AlexLis>>
Авг. 19, 2008 11:28:12
redixin
а почему бы не сделать просто
if form.is_valid():
new_form = form.save()
пробовал и так,все равно выдает ‘ReportForm’ object has no attribute ‘save’
redixin
Авг. 19, 2008 11:43:51
ой, торможу.. тут save() быть и не может, это есть только у
http://www.djangoproject.com/documentation/modelforms/
Александр Кошелев
Авг. 19, 2008 11:53:27
<<AlexLis>>
Пользуйтесь BB разметкой для выделения кода, пожалуйста. Надоело уже править.
И да, у обычной формы нет метода save(). Да и куда ему, если бы был, сохранять дынный вообще, вы подумали?
<<AlexLis>>
Авг. 19, 2008 11:56:22
А не могли бы вы приветси пример save() для моей формы?заранее спаибо
securelord
Авг. 19, 2008 17:13:28
<<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()
При условии что поля формы такие же как поля модели(названия)
Что то вроде этого
max
Авг. 20, 2008 09:57:08
Не, ну зачем же из формы 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()
Правильно я говору?
securelord
Авг. 20, 2008 10:27:33
max
Сорри, хотел написать одно, получилось другое. Это все “copy-paste” виноват :)
<<AlexLis>>
Авг. 20, 2008 11:04:28
Хм..поблему решил,но по-моему не оптимально..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})