如何根据以前的表单为表单提供信息?

时间:2011-09-11 04:25:07

标签: django django-forms django-formwizard

用户提交表单。

表单1用作表单2 form_factory

的种子信息

在尝试哄骗Django 1.3股票使用表格工厂3小时后使用django表格向导。

我正在试图弄清楚如何播种这些信息。我有这些信息 - 我只是不知道该把它贴在哪里。 (哦,我有想法..)

- urls.py -

url(r'homes/bulk/$', 
   BulkHomeWizard.as_view([('home_0', BulkUploadFormOne), 
                           ('home_1', formset_factory(BulkUploadFormTwo, extra=1))])

- views.py -

class BulkHomeWizard(SessionWizardView):

def get_context_data(self, form, **kwargs):
    context = super(BulkHomeWizard, self).get_context_data(form, **kwargs)
    self.template_name = 'axis/bulk_%s.html' %  self.steps.current
    if self.steps.current == 'home_1':
        data = self.get_cleaned_data_for_step('home_0')
        # OK I have the data.. Now I thought I could simply pass the form back in....
        HomeFormSet = formset_factory(BulkUploadFormTwo, extra=0)
        form = HomeFormSet(initial=data['homes'])

        context.update({'form': form})
    return context

如果有人知道这些新形式的向导你会介意给我一次。我确信这很简单......

2 个答案:

答案 0 :(得分:4)

对于较旧的Django版本,有一个Django 1.4向导的后端:

https://github.com/stephrdev/django-formwizard

你应该使用它来代替1.4中不推荐使用的Django 1.3向导。您到Django 1.4的端口将更容易。

如果你想这样做,你可以像这样准备你的Django 1.4端口:

try:
    # Django 1.4
    from django.contrib.formtools.wizard.views import SessionWizardView
except ImportError:
    # For older django version use formwizard backport
    from formwizard.views import SessionWizardView

答案 1 :(得分:2)

关键是SessionWizardView ......这是Django的开发分支,直到1.4才会发布。您当然可以下载开发分支并使用SessionWizardView,但不建议将其用于生产代码!

1.3的表单向导的旧版本是documented here。它做得少得多(因此是新版本)并且基本上将所有内容作为隐藏字段传递。