FormWizardの各stepに名前をつける
昨日ちょっと書きましたが、FormWizardは単純にformのリストを渡すと、各stepを識別する名前がu'0'、とかu'1'とかになります。
class OrderWizard(SessionWizardView): form_list = [AuthenticationForm, AddressForm, PaymentForm] def done(self, form_list, **kwargs): # 入力値を使って、登録処理などを行い、 # 実際はリダイレクトさせる return render_to_response('apps/done.html', { 'form_data': [form.cleaned_data for form in form_list], })
各stepにわかりやすい名前をつける方法は、WizardViewのget_initkwargsメソッドのコメントに書いてあります。
* `form_list` - is a list of forms. The list entries can be single form
classes or tuples of (`step_name`, `form_class`). If you pass a list
of forms, the wizardview will convert the class list to
(`zero_based_counter`, `form_class`). This is needed to access the
form for a specific step.
フォームのリストの代わりに、('step_name', form)のリストを渡すんですね
こんな感じです
# views.py ORDER_FORMS = [("login", AuthenticationForm), ("address", AddressForm), ("payment", PaymentForm)] class OrderWizard(SessionWizardView): form_list = ORDER_FORMS def done(self, form_list, **kwargs): # 入力値を使って、登録処理などを行い、 # 実際はリダイレクトさせる return render_to_response('apps/done.html', { 'form_data': [form.cleaned_data for form in form_list], }) # urls.py url(r'^order/$', OrderWizard.as_view(ORDER_FORMS)),