2011-02-10 63 views
3

是否有可能建立一個在Django admin中創建對象的兩階段表單?構建一個用於添加對象的兩階段Django管理表單?

當管理員用戶訪問/admin/my-app/article/add/時,我想顯示一些選項。然後,應用程序將根據所做的選擇顯示帶有預先計算的字段的創建頁面。

+1

保存「部分」項目是否會出現問題?如果不是,您可以簡單地在保存方法中預先計算並將用戶返回到添加的項目。 – Wolph 2011-02-10 00:50:57

回答

5

您可以在myapp.articleModelAdminSource)上覆蓋add_view方法。它負責渲染模型並向數據庫添加對象。

在添加您的功能時,您可能想保留原始代碼而不是複製/修改它。

草案

def add_view(self, request, **kwargs): 
    if Stage1: 
     do_my_stuff() 
     return response 
    else: 
     return super(ModelAdmin, self).add_view(self, request, **kwargs) 

現在需要兩個階段之間進行區分。 GET查詢字符串中的參數可以做到這一點。要將初始數據傳遞給管理員中的表單,您只需要將字段名值對作爲參數包含在查詢字符串中。

草案2

def add_view(self, request, **kwargs): 
    if 'stage2' not in request.GET: 
     if request.method == 'POST': 
      # calculate values 
      parameters = 'field1=foo&field2=bar' 
      return redirect('myapp_article_add' + '?stage2=1&' + parameters) 
     else: 
      # prepare form for selections 
      return response 
    else: 
     return super(ModelAdmin, self).add_view(self, request, **kwargs) 

你可能需要看看代碼返回在第一階段的正確響應。有幾個模板變量add_view集,但希望這是一個很好的開始看更進一步。

相關問題