在数据库中保存 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 1.4 表单向导,特别是预填充和保存

Django 表单向导备份和恢复

Django:如何让表单向导在创建表单时接收请求对象?

Django 表单向导 - 将请求传递给视图?

django 表单向导:全局名称“请求”未在 done() 方法中定义

页面未在 django 中保存表单数据