1

我正在使用一个SessionWizardView管理两种表格的人。例如,当我在最后一步重新加载页面时,我又回到了第一步,必须再次输入所有字段。

这是预期的行为吗?如果是这样,是否有可能回到我重新加载页面之前的步骤?当然,所有字段都应相应填写。

class ManufacturingCalculatorWizard(SessionWizardView):
  def get_template_names(self):
    TEMPLATES = {
        "blueprint": "manufacturing/forms/select_blueprint.haml",
        "calculator": "manufacturing/forms/calculator.haml"
    }

    return [TEMPLATES[self.steps.current]]

  def done(self, form_list, **kwargs):
    form_data = [form.cleaned_data for form in form_list]
    rcontext = RequestContext(self.request, { 'data' : calculate_manufacturing_job(form_data) })
    return render_to_response('manufacturing/forms/result.haml', rcontext)
4

1 回答 1

2

在方法之后呈现的页面done不是向导的一部分,因此当您重新加载它时,django 将尝试重定向到第一页作为向导的新会话。

如果您想将最后一步添加为预览和确认页面之类的内容,您可以使用虚拟表单添加新步骤并使用模板显示适当的数据。要从前面的步骤中获取数据,您可以使用视图的get_context_data方法,使用先前表单的清理数据构建上下文。

于 2012-10-01T18:19:51.370 回答