在django中重用用户视图的管理表单?

时间:2009-10-28 15:02:51

标签: django forms django-forms

在创建models.py和admin.py之后,Django正在制作非常好的表单。

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

ModelForm只生成“简单”形式。我在哪里可以获得额外的电池?

2 个答案:

答案 0 :(得分:4)

我实际上可以按照此页面上的说明复制表单中的绿色按钮:http://www.hoboes.com/Mimsy/hacks/replicating-djangos-admin/

答案 1 :(得分:3)

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

主要的例外是用于添加新条目的小绿色加号按钮。制作这些通用文件非常困难,因为它们依赖于一些特定于管理员的东西:知道在哪里可以找到链接模型的添加页面; JS弹出一个窗口,在提交时关闭它,并更新父页面;您可以深入了解管理员并弄清楚它是如何实现这些额外细节的,但是没有一种简单的方法可以将它们放入您的代码中。

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