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