在数据库中保存 Django 的表单向导 form_list 的最简单方法?

Posted

技术标签:

【中文标题】在数据库中保存 Django 的表单向导 form_list 的最简单方法?【英文标题】:Easiest way to save Django´s formwizard form_list in DB? 【发布时间】:2011-08-11 18:41:18 【问题描述】:

我已经从一个模型创建了多个子表单以在 Django 中使用 FormWizard。

令人困惑的是节省的部分。用户完成表单后,我想将信息保存在数据库中。这是相当简单的一种形式,我可以说

one_form_from_model.save()

但是当我得到一个 form_list 返回时我可以这样做吗?我读了一些帖子,但它们对我没有任何意义。

我可以清理数据吗

form_list 中表单的form.cleaned_data]

然后遍历每一个表单?但是我需要知道以哪种形式找到正确的字段。没有更简单的方法吗?

感谢您的建议!

【问题讨论】:

【参考方案1】:

试试这样的:

instance = MyModel()
for form in form_list:
    for field, value in form.cleaned_data.iteritems():
        setattr(instance, field, value)
instance.save()

【讨论】:

inst = MyModel(**key: value for form in form_list for key, value in form.cleaned_data.items())inst.full_clean() 然后 inst.save() 或更好:MyModel(**self.get_all_cleaned_data()) @GuillaumeLebreton 为什么? 嗯,它对我来说更优雅,而且我认为肯定更快。

以上是关于在数据库中保存 Django 的表单向导 form_list 的最简单方法?的主要内容,如果未能解决你的问题,请参考以下文章

Django 表单向导备份和恢复

使用 JSON 的 Django 导入向导

Django:使用自定义保存方法更新表单中的对象

django:如何在表单向导中使用 inlineformset?

Django:在表单向导中为步骤动态设置表单集

Django ModelForm 向导 - 如何创建数据库对象?