Django表单向导和ModelForm预览

9
我有一个庞大的Django模型(73个字段),将连接到ModelForm。我想使用表单向导和表单预览contrib应用程序中发现的功能组合。
也就是说,表单字段将分布在多个页面上,并且用户将有机会在创建模型实例之前查看/预览数据。
这种情况有没有最佳实践或示例代码呢?

1
虽然不值得回答,但是:对于超出最微不足道的事情使用FormWizard可能会有问题(至少对我来说是这样)。其中一个问题是 - 你无法以明显的方式控制传递给表单__init__的内容(除了初始值)。那么你要如何向表单的__init__提供“实例”关键字参数呢?当然有方法 - 我例如通过声明一个内部类,该类继承自必要的ModelForm并覆盖__init__来解决它。然后你必须将该类分配给.form_list的一个元素。不是很明显... - shylent
1
如果你要使用FormWizard,你必须经常处理这样的事情。我并不是说FormWizard不好,但它确实不太容易使用。还有73个字段?我知道这听起来很愚蠢,但也许可以通过将任务分解为多个较小的任务来简化任务?比如重构你的模型并单独处理每个模型或其他什么方法? - shylent
感谢您的反馈,shylent。信不信由你,这73个字段已经是简化版了。我们只是需要收集大量的数据。 :-) - Brian Tol
2个回答

1

我在我的第一个Django项目中也做了类似的事情。使用基于session的FormWizard,我对其进行了自定义,以便用户可以在任何表单上停止提交数据。

此时,您可以使用FormPreview来显示信息或仅动态生成表单并向用户显示。数据保留在会话中。


0

你可以将整个字典传递到上下文中,然后在模板中访问它:

# views.py
def get_context_data(self, **kwargs):
    context = super(MyWizard, self).get_context_data(**kwargs)
    context['all_data'] = self.get_all_cleaned_data()
    return context

# template.html
{{ all_data }}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接