复制Django Admin的“添加”按钮

时间:2011-09-23 18:01:46

标签: django django-admin

假设我有以下两个模型,每个模型都有自己的form来创建模型记录。

例如:

Business_Client Model:
   busName field - CharField
   mainContact field - ForeignKey(Contacts)

Contacts Model:
    firstName field - CharField
    lastName field - CharField

当用户想要创建新业务时,他们必须从下拉菜单中选择“主要联系人”。但是,如果联系人不在列表中,则必须先创建 记录,然后返回,然后重新 - 再次创建business记录。

管理界面通过下拉菜单旁边的小+按钮将您带到Contact表单,然后填写,点击Save然后带来您返回Business表单, 已经选择了mainContact字段到您新创建的Contact记录。

我该怎么做!?!我一直在谷歌周围搜索,我很快就会出现问题。任何人都有一些很好的链接/教程可以让我去?

谢谢!

1 个答案:

答案 0 :(得分:1)

我从来没有这样做过,但是想一想:

你有一个观点

/add/business/

带有名称字段和联系字段(旁边有一点加号)。加号只是一个链接,通过指向

的javascript创建新的弹出窗口
/add/contact/

并有一个javascript回调。当表单被提交,验证并放入DB时,窗口关闭,id / name被传递回原始表单并自动输入到字段中。

这似乎是django管理员如何做到的。您可以查看django管理员自己使用的小部件:

https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/widgets.py#L218

具有html的渲染函数:

https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/widgets.py#L249

这表明它只是一个锚点链接,带有指向relvant添加视图的onlick javascript弹出窗口。提交表单后,将传回值。

https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js#L55