2009-10-28 98 views
6

在创建models.py和admin.py后,Django制作了非常好的表单。在django中重复使用用户视图的管理表单?

如何在我自己的视图中重用这些表单(具有对外键和多对多字段的更好处理)?

ModelForm只生成“简单”形式。我从哪里得到额外的电池?

回答

2

股票ModelForm将完成管理员所做的几乎所有操作(ForeignKeys将变为下拉选择,ManyToManyFields将变为多选)。

主要的例外是用于添加新条目的小绿加按钮。要做出这些通用性是相当困难的,因为它们依赖于许多管理员特定的事情:知道在哪里找到链接模型的添加页面; JS弹出一个窗口,在提交时关闭它,并更新父页面;等等。你可以挖掘管理员并找出它是如何实现这些额外的细节的,但是不会有一种简单的方法将它们放入你的代码中。

您可能想要的其他细节是ManyToManyField的filter_horizo​​ntal或filter_vertical替代UI。这些实现为ordinary form widgets,所以潜在的可能性是在你自己的代码中重用它们,但我猜测它需要一些实验和定制才能使它正常工作。

+0

绿色加号按钮是我一直在寻找细微。所以,这证实没有简单的方法。谢谢! – toaster 2009-10-28 16:31:10