Найти - Пользователи
Полная версия: ModelForm, как обновить запись связанную с ней.
Начало » Django » ModelForm, как обновить запись связанную с ней.
1
necros
view.py
def edit (request,id):
errors = []
persona = Persona.objects.get(id=id)
forma = PersonaForm(instance=persona)
if request.method == 'POST':
post = request.POST.copy()
forma = PersonaForm(post)
if forma.is_valid():
forma.save()
return HttpResponseRedirect('/narko/spisok')
return render_to_response('edit.html',{'persona':persona,'forma':forma})
edit.html
<html>
<head>
<title>Редактирование</title>
</head>
<body>
<form method="post">

{{ forma.as_p }}

<input type="submit" />
</form>
</body>
</html>
Вот такой простой код, чтобы отредактировать запись в базе, но после сохранения он создает новую запись, а не изменяет старую. Подскажите как можно это изменить.
d1ffuz0r
def edit(request, id):
errors = []
persona = Persona.objects.get(id=id)
if request.POST:
forma = PersonaForm(request.POST)
if forma.is_valid():
persona.field = forma.cleaned_data['field']
persona.save()
return HttpResponseRedirect('/narko/spisok/')
else:
forma = PersonaForm(initial=persona)
return render_to_response('edit.html', {'persona': persona,
'forma': forma})
necros
Большое спасибо. Помогло
FishHook
Постойте, а почему не так???

def edit (request,id):
errors = []
persona = Persona.objects.get(id=id)

if request.method == 'POST':

forma = PersonaForm(request.POST, instance=persona)
if forma.is_valid():
forma.save()
return HttpResponseRedirect('/narko/spisok')
else:
return HttpResponseRedirect(".")

forma = PersonaForm(instance=persona)
return render_to_response('edit.html',{'persona':persona,'forma':forma})
necros
И так работает тоже. Большое спасибо :-)
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