1

私はSessionWizardView2つのフォームを管理しているaで作業しています。たとえば、最後のステップでページをリロードすると、最初のステップに戻り、すべてのフィールドに再度入力する必要があります。

これは意図された動作ですか?もしそうなら、ページをリロードする前のステップに戻ることは可能ですか?もちろん、すべてのフィールドはそれに応じて入力する必要があります。

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 に答える