Тут не навыки поиска затруднили решение проблемы, а плохое знание английского, думал что импорт redirect не нужен, был уверен redirect входит в HttpResponseRedirect , ну да ладно, надо внимательнее читать, будет легче )
следующие грабли, форма у меня написана полностью вручну, т.е forms.Form а не ModelForm, для forms.Form передать в instance значения модели невозможно, пытался вручную каждый параметр передавать как описано тут:
http://softwaremaniacs.org/forum/django/31706/
p = Post.objects.get(pk=post_id)
post = {
'name': p.name,
'blog': p.blog.alias,
'text': p.text,
}
выложу куски кода, авось другим начинающим пригодятся
urls.py
(r'^admin/client_add/$', views.client_add),
(r'^admin/client_edit/(\d+)/$', views.client_edit),
views.py
def client_add(request):
if request.method == 'POST':
form_client = ClientAddForm(request.POST)
button = request.POST.get('button')
if form_client.is_valid():
cd = form_client.cleaned_data
p = Clients(name=cd['name'], inn=cd['inn'], ogrn=cd['ogrn'])
p.save()
if button == u'Сохранить':
return HttpResponseRedirect('/admin/clients/clients/')
if button == u'Сохранить и продолжить редактирование':
client_id=p.id
return redirect(client_edit, client_id)
else:
form_client = ClientAddForm()
return render_to_response('admin/clients/client_add.html', {'form_client': form_client}, RequestContext(request, {}))
client_add = staff_member_required(client_add)
def client_edit(request, id_client):
try:
id_client = int(id_client)
except ValueError:
raise Http404()
p = Clients.objects.get(id=id_client)
data_form = {'name':p.name, 'inn':p.inn, 'ogrn':p.ogrn}
if request.method == 'POST':
form_client = ClientAddForm(request.POST)
button = request.POST.get('button')
if form_client.is_valid():
cd = form_client.cleaned_data
p = Clients(name=cd['name'], inn=cd['inn'], ogrn=cd['ogrn']], id=id_client)
clients = p.save()
if button == u'Сохранить':
return HttpResponseRedirect('/admin/clients/clients/')
if button == u'Сохранить и продолжить редактирование':
clietn_id=p.id
return render_to_response('admin/clients/client_edit.html', {'form_client': form_client}, RequestContext(request, {}))
else:
form_client = ClientAddForm(data_form)
return render_to_response('admin/clients/client_edit.html', {'form_client': form_client}, RequestContext(request, {}))
client_edit = staff_member_required(client_edit)