FormWizardのstep
step数ごとにテンプレートファイルを指定できそうなので、
オーバーライドしたget_templateからstepの値を取得してみたがいつも"0"
基本的に永遠のPython初心者なので自分のコードを疑ってみたがわからないorz
ということで、\django\contrib\formtools\wizard.pyのget_templateと
get_templateを読んでいるrender_templateを見てみた。
解らなかったが何度も眺めていたら、あっているかどうか解らないけど気づいたことがある。
\django\contrib\formtools\wizard.pyのdef __init__は
def __init__(self, form_list, initial=None): "form_list should be a list of Form classes (not instances)." self.form_list = form_list[:] self.initial = initial or {} self.step = 0
となっている。
そして、render_templateがget_templateを呼んでいる箇所を見ると
return render_to_response(self.get_template(self.step), dict(context, step_field=self.step_field_name, step0=step, step=step + 1, step_count=self.num_steps(), form=form, previous_fields=previous_fields ), context_instance=RequestContext(request))
となっている。
そして、他のself.stepを見ているとインクリメントしている箇所が見当たらない。
とすると、self.stepがずっと"0"なのも頷ける。
ということで、次のように変更したらうまくいった:)
return render_to_response(self.get_template(step), dict(context, step_field=self.step_field_name, step0=step, step=step + 1, step_count=self.num_steps(), form=form, previous_fields=previous_fields ), context_instance=RequestContext(request))
どうしたらいいのかわからないので、もっとPythonを勉強する。