FormWizardのstep続き
前回はDjango本体に修正して確認していたのですが、それはやりたくない。
ということで、考えた。
forms.pyにrender_templateをコピペして修正して実行したらどうかと。
こんなふうに
def render_template(self, request, form, previous_fields, step, context=None): self.step = step context = context or {} context.update(self.extra_context) 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))
出来た!けど、もっと短く。
def render_template(self, *args, **kwargs): self.step = args[3] return super(ContactWizard, self).render_template(*args, **kwargs)
これも出来た!
本当にこれでいいのか解らないけど、Djangoのソースを触るよりはましかな?
追記:
\django\contrib\formtools\wizard.pyを見てみたら、self.stepのインクリメントは__call__のis_validでしたほうが良いのかなぁ