用户提交表单。
表单1用作表单2 form_factory
的种子信息在尝试哄骗Django 1.3股票使用表格工厂3小时后使用django表格向导。
我正在试图弄清楚如何播种这些信息。我有这些信息 - 我只是不知道该把它贴在哪里。 (哦,我有想法..)
- urls.py -
url(r'homes/bulk/$',
BulkHomeWizard.as_view([('home_0', BulkUploadFormOne),
('home_1', formset_factory(BulkUploadFormTwo, extra=1))])
- views.py -
class BulkHomeWizard(SessionWizardView):
def get_context_data(self, form, **kwargs):
context = super(BulkHomeWizard, self).get_context_data(form, **kwargs)
self.template_name = 'axis/bulk_%s.html' % self.steps.current
if self.steps.current == 'home_1':
data = self.get_cleaned_data_for_step('home_0')
# OK I have the data.. Now I thought I could simply pass the form back in....
HomeFormSet = formset_factory(BulkUploadFormTwo, extra=0)
form = HomeFormSet(initial=data['homes'])
context.update({'form': form})
return context
如果有人知道这些新形式的向导你会介意给我一次。我确信这很简单......
答案 0 :(得分:4)
对于较旧的Django版本,有一个Django 1.4向导的后端:
https://github.com/stephrdev/django-formwizard
你应该使用它来代替1.4中不推荐使用的Django 1.3向导。您到Django 1.4的端口将更容易。
如果你想这样做,你可以像这样准备你的Django 1.4端口:
try:
# Django 1.4
from django.contrib.formtools.wizard.views import SessionWizardView
except ImportError:
# For older django version use formwizard backport
from formwizard.views import SessionWizardView
答案 1 :(得分:2)
关键是SessionWizardView ......这是Django的开发分支,直到1.4才会发布。您当然可以下载开发分支并使用SessionWizardView,但不建议将其用于生产代码!
1.3的表单向导的旧版本是documented here。它做得少得多(因此是新版本)并且基本上将所有内容作为隐藏字段传递。