Django表单向导,如何重置/清除向导?

Django表单向导,如何重置/清除向导?,django,django-forms,django-formwizard,Django,Django Forms,Django Formwizard,我已经创建了一个Django表单向导,它运行良好。但是,在完成向导并再次启动它之后,它将加载上次使用时生成的数据。相反,我希望它清除以前的向导状态,并在成功完成后重新开始。我已尝试修改向导的“完成”方法,但它不起作用: def done(self, form_list, **kwargs): self.instance_dict = {} self.storage.reset() return HttpResponseRedirect('/foo/') 要使向导按我需要

我已经创建了一个Django表单向导,它运行良好。但是,在完成向导并再次启动它之后,它将加载上次使用时生成的数据。相反,我希望它清除以前的向导状态,并在成功完成后重新开始。我已尝试修改向导的“完成”方法,但它不起作用:

def done(self, form_list, **kwargs):
    self.instance_dict = {}
    self.storage.reset()
    return HttpResponseRedirect('/foo/')

要使向导按我需要的方式工作,我必须更改什么?我的向导扩展了
名称DurlSessionWizardView
类。

我不能100%确定这是不是真的,但我认为以下方法有效:

我正在向导中保存表单实例,如下所示:

self.instance_dict['foo'] = foo
def get_form_instance(self, step):
    ...
    if self.steps.current == 'foo' and self.storage.extra_data.has_key('foo'):
        return Bar.objects.filter(foo=self.storage.extra_data['foo'])
    ...
但出于某种原因

self.instance_dict = {}
我不清楚那些数据。我转而将对象保存在额外数据中:

self.storage.extra_data = {'foo' : foo}
然后在向导的
def get\u form\u实例(self,step)
方法中检索,例如:

self.instance_dict['foo'] = foo
def get_form_instance(self, step):
    ...
    if self.steps.current == 'foo' and self.storage.extra_data.has_key('foo'):
        return Bar.objects.filter(foo=self.storage.extra_data['foo'])
    ...

显然,使用上述方法成功地清除了该数据。然而,由于更加复杂,我最终放弃了整个表单向导,只使用了一步表单。

重置表单向导的存储非常容易。我通常在数据处理完成后这样做:

def done(self, form_list, form_dict, **kwargs):
    #do stuff with your form data
    self.instance_dict = None
    self.storage.reset()
    return redirect(reverse_lazy('somewhere'))
或者在从另一个视图重定向后重置向导

del request.session['wizard_name']

尝试添加:self.storage.current\u step=self.steps.first。这行代码有什么新内容吗?请尝试向向导使用以下参数的页面发送GET请求:?reset=true。它是否重置了向导?添加?reset=true或?foo=randomvalue也没有帮助。据我所知,“?reset=true”必须重置向导(源代码中有一点)。嗯,我想我尝试时没有重置向导,但我无法再检查它,因为我采用了完全不同的方法。无论如何谢谢你的帮助!也许其他经历过同样问题的人可以检查并确认一下?