Django:如何使用Django1.7中的SessionWizardView将数据保存到数据库?

2024-05-13 09:08:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试将SessionWizardView用于一个多步骤表单,以便进行长时间的注册过程。我在初始化时使用了2个ModelForms和instance。在

以下是源代码: https://djangosnippets.org/snippets/1078/

文档告诉我用表单数据(表单列表)做一些事情,但是不能在这里保存数据。在

class ContactWizard(SessionWizardView):
    def done(self, form_list, **kwargs):
        do_something_with_the_form_data(form_list)
        return HttpResponseRedirect('/page-to-redirect-to-when-done/')

问:如何在django1.7中使用SessionWizardView将数据保存到数据库?在


Tags: to数据instancehttpsorgform表单源代码
1条回答
网友
1楼 · 发布于 2024-05-13 09:08:10

done方法的form_list参数是属于向导一部分的表单对象的列表(存储在向导实例的self.form_列表属性)。在

如果您有一个由两个modelforms组成的向导,form_list将有两个modelform实例。在

您可能想对这些modelforms调用“save”方法。在

form_list属性是OrderedDict。我不确定是否总是这样,但是使用NamedUrlWizard,表单也在元组(url_name,form_object)内部。在

因此,为了在每个窗体上调用save()方法,您可以:

def done(self, form_list, **kwargs):
    for form in self.form_list.items():
        form[-1].save()
    return HttpResponseRedirect('/page-to-redirect-to-when-done/')

顺便说一句,你链接到的代码片段确实被添加到了django中设计工具,它随cookie或会话存储一起提供。然而,django1.8这个包被拆分成django-formtools。在

相关问题 更多 >