FormWizard を組み込み、長いフォームを処理したいと考えています。調査の結果、セッションを介してフォームウィザードを管理するため、django- merlin が最適なオプションのようです。ただし、 ( djangoウィザードのドキュメントに記載されているように)それを取り込もうとすると、 AttributeError: type object 'CreateWizard' has no attribute 'as_view'
.
これは次のようになります。
from merlin.wizards.session import SessionWizard
class StepOneForm(forms.Form):
year = forms.ChoiceField(choices=YEAR_CHOICES)
...
class StepTwoForm(forms.Form):
main_image = forms.ImageField()
...
class StepThreeForm(forms.Form):
condition = forms.ChoiceField(choices=CONDITION)
...
class CreateWizard(SessionWizard):
def done(self, form_list, **kwargs):
return HttpResponseRedirect(reverse('wizard-done'))
URL:
url(r'^wizard/(?P<slug>[A-Za-z0-9_-]+)/$', CreateWizard.as_view([StepOneForm, StepTwoForm, StepThreeForm])),
マーリンのドキュメントは少しまばらなのでas_view()
、元の django フォーム ウィザードのドキュメントで説明されている方法を使用することにしましたが、AttributeError
. urlconf に merlin ウィザードを組み込むにはどうすればよいですか? アイデアをありがとう!
これは、@mVChr の回答に基づいて更新し、次のような手順を定義した後に得られるエラーとトレースバックです。
step_one = Step('step_one', StepOneForm())
エラーとトレースバック:
TypeError at / issubclass() arg 1 must be a class
Traceback:
File /lib/python2.7/django/core/handlers/base.py" in get_response
89. response = middleware_method(request)
File "/lib/python2.7/django/utils/importlib.py" in import_module
35. __import__(name)
File "/myproject/myproject/urls.py" in <module>
7. from myapp.forms import step_one, step_two, step_three, CreateWizard
File "/myproject/myapp/forms.py" in <module>
16. step_one = Step('step_one', StepOneForm())
File "/lib/python2.7/merlin/wizards/utils.py" in __init__
36. if not issubclass(form, (forms.Form, forms.ModelForm,)):
Exception Type: TypeError at /
Exception Value: issubclass() arg 1 must be a class
まだエラーが発生していますが、@mVChr のおかげで解決に近づいたと感じています。このエラーを解決する方法についてのアイデアは大歓迎です! アイデアをありがとう!