2011-09-23 190 views
2

比方说,我有以下两种模式,各有各的form创建模型的记录。复制Django管理的“添加”按钮

例如:

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

Contacts Model: 
    firstName field - CharField 
    lastName field - CharField 

当用户想要创建一个新的业务,他们将不得不选择一个“主要联系人”从下拉菜单。但是,如果联系人不在列表中,他们必须首先创建记录,然后再回来,并重新-start再次创造了business记录。

管理界面让一切变得简单通过具有下拉菜单,您可以到Contact形式旁边的小+按钮,填写好,打Save然后给你带来Business形式,mainContact字段已经选择到您新创建的Contact记录中。

我该怎么做!?!我一直在搜索谷歌,我正在缩短。任何人都有一些好的链接/教程,会让我走?

谢谢!

回答

1

我从来没有做过,但考虑这件事:

您有一个观点

/add/business/ 

与名称的字段,以及接触的场(在它旁边一个小加) 。加号只是一个链接,通过JavaScript创建新的弹出窗口,指向

/add/contact/ 

并且有一个javascript回调。当表单被提交,验证并放入数据库时​​,窗口关闭,并且ID /名称被传回原始表单并在该字段中自动输入。

这似乎是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

这表明它是简单地用一个点击数的锚链接指向相关的添加视图的JavaScript弹出窗口。一旦表单被提交,值就被传回。

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

+0

我认为你的行号不再有效。他们指出看起来像完全不相关的代码。 – Sardathrion

相关问题