django向导,在同一步骤中使用表单和formset

时间:2013-02-01 10:33:23

标签: django django-forms django-formwizard

我有一个场景,我正计划开始编码,我正在考虑使用django wizard

我的计划是用两个步骤构建一个django向导,第一个简单但第二个稍微复杂一点。第二步将包含一个表单,该表单将根据从第一步中选择的值进行重新整形,我可以看到自己正在做的事情。我已经探索了所有现有的功能,我认为它可以很容易地完成。

我面临的挑战是第二步本身。我有一个表单和一个formset,formset是一对多的形式(Article - > Images)所以当到达第二步时,用户将能够将一个或多个图像上传到同一篇文章。

我尝试在google邮件列表和stackoverflow上随处搜索以将formset传递给django向导类,但似乎你无法在同一步骤中传递两个表单。

NewItemWizard.as_view([
    ('category',    CategorySelectionForm),
    ('article',        ArticleForm)
])

如上所示,在上面的示例代码中,我希望能够将ArticleForm和ImageFormset传递给第二步。有没有办法开箱即用?

基于我正在阅读的内容,我相信使用像get_context_data这样的函数可能有所帮助,但它会非常hacky。

def get_context_data(self, form, **kwargs):
    context = super(NewItemWizard, self).get_context_data(form=form, **kwargs)
    if self.steps.current == 'article':
        context.update({
            'image_formset': ImageFormset()
        })
    return context

任何人都可以建议更好的方法吗?

干杯,

1 个答案:

答案 0 :(得分:7)

目前还没有直接的API,但有一个干净的解决方案,如下所述:

https://code.djangoproject.com/ticket/18830