2013-05-03 96 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