Найти - Пользователи
Полная версия: save() формы
Начало » Django » save() формы
1 2
<<AlexLis>>
есть форма:
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
а почему бы не сделать просто
if form.is_valid():
new_form = form.save()
<<AlexLis>>
redixin
а почему бы не сделать просто
if form.is_valid():
new_form = form.save()
пробовал и так,все равно выдает ‘ReportForm’ object has no attribute ‘save’
redixin
ой, торможу.. тут save() быть и не может, это есть только у http://www.djangoproject.com/documentation/modelforms/
Александр Кошелев
<<AlexLis>>
Пользуйтесь BB разметкой для выделения кода, пожалуйста. Надоело уже править.

И да, у обычной формы нет метода save(). Да и куда ему, если бы был, сохранять дынный вообще, вы подумали?
<<AlexLis>>
А не могли бы вы приветси пример save() для моей формы?заранее спаибо
securelord
<<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
Не, ну зачем же из формы 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
max

Сорри, хотел написать одно, получилось другое. Это все “copy-paste” виноват :)
<<AlexLis>>
Хм..поблему решил,но по-моему не оптимально..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})
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