2

我正在尝试创建一个 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)或者我错过了第三种可能性?

4

1 回答 1

1

有多个问题:

  • AccountsFormSet似乎不是模型形式集,因为它源自Form.

  • WizardView.done()提交最后一步且表单有效时调用方法。所以渲染表单集可能不是你想要的。

  • 您需要为步骤 2 指定正确呈现表单集的不同模板。

于 2012-10-13T06:46:40.830 回答