django表单 - 第一次提交表单后编辑对象

Joh*_*ohn 0 django django-forms

我正在使用django表单向数据库添加新对象.我目前的代码是:

if request.method == 'POST':
    form = MyForm(data=request.POST)

    if form.is_valid():
        obj = form.save()
 else:
    form = MyForm()

return render_to_response('reflections/add_reflection.html', {'form':form},context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

上面的代码目前每次提交表单时都会添加一个新对象.我想要发生的是,下次按下保存按钮时编辑对象而不是添加新记录.

我该怎么做?

sim*_*rsh 5

使用

 instance_id = None
 if request.method == 'POST':
    try:
        instance = MyType.objects.get(id=request.POST.get('instance_id'))
    except MyType.DoesNotExist:
        instance = None
    form = MyForm(data=request.POST, instance=instance)

    if form.is_valid():
        obj = form.save()
        instance_id = obj.id
 else:
    form = MyForm(instance=None)

return render_to_response('reflections/add_reflection.html', {'form':form, 'instance_id': instance_id or ''},context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

保存对象后,将其在上下文中的id传递给页面,并将其添加到表单内的隐藏输入字段name ='instance_id'.

快乐的编码.