2014-07-07 111 views
0

我想從一個Django模型中有9個字段構建多步表單。表格在每個步驟中都經過驗證,並在最後一步保存到數據庫後進行保存。Django:一個模型的多步表格

的快速解決方案,我能想到的Django formWizard旁邊的是

我有一個Django模型是這樣的:

class Question(models.Model): 
    name = models.CharField(max_length=100) 
    Description = models.TextField() 
    filter = models.CharField(max_length=20) 

我分裂形式分爲三個

class Filter(forms.ModelForm): 
    class Meta: 
     model = Question 
     exclude = ('filter',) 


class Name(forms.ModelForm): 
    class Meta: 
     model = Question 
     fields = ('name',) 


class Descripton(forms.ModelForm): 
    class Meta: 
     model = Question 
     fields = ('description',) 

urls和與views一起用於不同的步驟。問題是如何在最後一步驗證並保存多步驟表單數據?

回答

2

將您分成三個步驟而不是單個步驟的用例是什麼?

即一邊,一個簡單的解決辦法是:

  1. 清潔/驗證部分數據的每個提交後。
  2. 將隱藏字段中的部分數據發送回您的模板以進行後續步驟(也許Name可以繼承或使用Filter進行初始化,與在Name中描述相同)。
  3. 然後在最後的提交中,您將擁有以前的所有數據(一些隱藏字段),因此您可以將它們全部保存到數據庫中。
+0

那麼分裂的情況是在UX前端部分。 – MysticCodes

+0

在這種情況下,ajax是一種可接受的解決方案嗎? 您可以使用單個模型表單並在UI中手動分割字段。然後,對於每個部分,都有一個「提交」按鈕,通過ajax請求將部分表單數據發送回去進行清理。如果您收到「確定」回覆,則可以將它們移至表格的下一部分。否則,顯示錯誤。您的最終提交按鈕將成爲服務器的實際POST,因此您可以最後一次清理並立即保存所有內容。 –