2012-10-13 25 views
1

我想創建一個FormWizard,以便用戶輸入'日期'只有一次(在步驟1),然後(在步驟2),進入一些名稱與相關金額。 對於每個「名稱」和相關的「金額」,我想保存一個模型的實例(字段:日期,名稱,金額)。與ModelForm和ModelFormSet(這一個不渲染)的Django WizardView

對於第2步,我嘗試使用FormSet,但嚮導視圖根本不會呈現任何字段。它只顯示「2的第2步」和提交按鈕。

# In forms.py 

class FormForDate(forms.Form): 
'''Only for date''' 

    date = forms.DateField(initial = datetime.date.today()) 

class AccountaModelForm(ModelForm): 

    class Meta: 
     model = Account #model has 3 field: name, date, amount 
     exclude = ['date'] 

class AccountsFormSet(forms.Form): 

    amount_formset = modelformset_factory(Account, form=AccountaModelForm, extra=10, exclude=('date')) 
    amount_s_formset = amount_formset(queryset=Account.objects.none(),) 

在urls.py(其中包括):

url(r'^form/$', AccountMultiple.as_view([FormForDate, AccountsFormSet])) 

而且在views.py

class AccountMultiple(SessionWizardView): 

    def done(self, form_list, **kwargs): 

     for form in form_list: 
      print form #I am just doing something 

     return render_to_response('app/formset.html', { 
      'form': [form.cleaned_data for form in form_list], 
     }) 

我做得不對在此代碼? 或者它是模板的問題(我使用Django文檔中的一個:here) 或者我還有第三種可能性嗎?

回答

1

有多種問題:

  • AccountsFormSet似乎並不被modelformset從Form及其衍生。

  • WizardView.done()方法在提交最後一步並且表單有效時調用。所以渲染formset可能並不是你想要的。

  • 你需要指定正常顯示,該formset爲第2步

不同的模板