2013-05-03 41 views
0

views.py一种形式是如何打开编辑模式的Django

def when(request): 

    if request.method == 'POST': 

     reportform = ReportForm(data=request.POST) 

     if reportform.is_valid(): 
      report = reportform.save(commit=False) 
      report.save() 
      return redirect('/member/media/') 
    else: 
     reportform = ReportForm() 
    return render_to_response('incident/when.html',{ 
        'newreport_menu': True, 
        'form': reportform, 
        }, 
        context_instance=RequestContext(request)) 

我可以插入和保存数据后database.So保存数据,如果我再次打开该页面输入的数据应处于可编辑模式。最后输入的数据应显示在字段中。如何执行此操作。

感谢

回答

0

使用instance参数的形式实例调用。

0
def when(request, instance_id=None): 

    report = None 
    if instance_id: 
     report = Report.objects.get(pk=instance_id) 

    if request.method == 'POST': 

     reportform = ReportForm(data=request.POST, instance=report) 

     if reportform.is_valid(): 
      report = reportform.save(commit=False) 
      report.save() 
      return redirect('/member/media/') 
    else: 
     reportform = ReportForm(instance=report) 
    return render_to_response('incident/when.html',{ 
       'newreport_menu': True, 
       'form': reportform, 
       }, 
       context_instance=RequestContext(request)) 

保留两个网址,一个用于创建,另一个用于编辑,但它们都将使用相同的视图。

url(r'^create/$', 'app.views.when', name='create_report'), 
url(r'^edit/(?P<instance_id>\d+)/$', 'app.views.when', name='edit_report') 
+0

不,这不会在保存时更新现有实例。你也需要在POST的瞬时传递'instance'。 – 2013-05-03 13:33:23

+0

丹尼尔,更新了答案,谢谢。 – 2013-05-03 13:36:00

+0

如果您使用相同的上下文,但您需要两个网址,它看起来可能是相同的网页,否则您将如何知道要编辑的报告。您需要某种方式发送要编辑的报告的instance_id。 – 2013-05-03 13:47:20

相关问题