Django formwizard:在表单之间传递数据

sef*_*lic 4 python django

我有一个包含3个表单的表单向导.基本上,我要做的是将数据从第一种和第二种形式传递到第三种形式.我尝试的是向向导类添加一个字典属性,并在每次process_step调用该方法时更新该字典.Django 1.4文档说每次为所有提交的步骤呈现页面时都会调用此方法.

在下面的示例代码中,使用整数更改字典属性self.test以使其保持简单.在这种情况下,每次process_step调用方法时,值为self.test2,永远不会增加.似乎__init__为每个表单调用该方法.

class MyWizard(SessionWizardView):
    def __init__(self, *args, **kwargs):
        super(MyWizard, self).__init__(*args, **kwargs)
        self.test = 1

    def process_step(self, form):
        self.test += 1  
        print self.test
        return self.get_form_step_data(form)
Run Code Online (Sandbox Code Playgroud)

除了这个解决方案之外,是否有更优雅的方式在表单向导的表单之间传递数据?

小智 8

我要做的是以下内容:

class MyWizard(SessionWizardView):
    def get_context_data(self, form, **kwargs):
        context = super(MyWizard, self).get_context_data(form=form, **kwargs)
        if self.steps.step1 == 3:
            data_from_step_1 = self.get_cleaned_data_for_step('0') # zero indexed
            data_from_step_2 = self.get_cleaned_data_for_step('1') # zero indexed
            context.update({'data_from_step_1':data_from_step_1,
                            'data_from_step_2':data_from_step_2})
        return context
Run Code Online (Sandbox Code Playgroud)