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でしたほうが良いのかなぁ