2013-02-14 73 views
0

從前面一個問題再發帖:Django表單嚮導:如何將「確認」屏幕作爲嚮導的最後一步?

Django FormWizards: How to painlessly pass user-entered data between forms?

我使用FormWizard功能在Django 1.4.3。

我已成功創建了4個步驟的表單。在表單的前三個步驟中,它可以正確地從用戶那裏獲取信息,驗證信息等。在步驟#4中,它現在只顯示一個「確認」按鈕。沒有其他的。當您在步驟#4上點擊「確認」時,在done()函數中執行一些有用的操作。到目前爲止,它一切正常。

但是,我想讓它在第4步(確認步驟)中顯示用戶他們在前面的步驟中輸入的數據以供他們查看。我試圖弄清楚實現這一點的最無痛的方法。到目前爲止,我在名爲formList的上下文中創建了一個條目,其中包含已完成的表單列表。

類my4StepWizard(SessionWizardView):

def get_template_names(self): 
    return [myWizardTemplates[self.steps.current]] 

def get_context_data(self, form, **kwargs): 
    context = super(my4StepWizard, self).get_context_data(form=form, **kwargs) 
    formList = [self.get_form_list()[i[0]] for i in myWizardForms[:self.steps.step0]] 

    context.update(
     { 
      'formList': formList, 
     } 
    ) 
    return context   


def done(self, form_list, **kwargs): 
    # Do something here. 
    return HttpResponseRedirect('/doneWizard') 

表#1具有稱爲MyField的輸入字段。所以在我的第4步模板中,我想要{{formList.1.clean_myField}}。然而,當我這樣做,我得到以下錯誤:

異常值: 「my4StepWizard」對象有沒有屬性「cleaned_data」

看來,我投入FORMLIST形式是無界的。所以他們不包含用戶的數據。有沒有我可以用來獲取數據本身的修復?我真的很想用上下文來傳遞數據,就像我在上面做的那樣。

回答

0

如果在三種表單中沒有任何重複的字段名稱,則可以使用WizardView.get_all_cleaned_data()。它會返回所有可以通過get_context_data()傳遞給模板的數據的字典,正如你試圖做的那樣。 That's the angle I'm currently taking,但我希望找到更好的方法。

相關問題