我正在尝试创建一个FormWizard,以便用户只输入一次“日期”(在步骤1中),然后(在步骤2中)输入一些具有相关金额的名称。 对于每个“名称”和关联的“金额”,我想保存模型的实例(字段:日期,名称,金额)。
对于第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) 或者我缺少第三种可能性吗?
答案 0 :(得分:1)
有很多问题:
您的AccountsFormSet
似乎不是modelformset,因为它来自Form
。
WizardView.done()
方法。因此,渲染formset可能不是你想要的。
您需要指定不同的模板,以便为第2步正确呈现表单集。