如何像管理面板一样在 Django 的外键中添加新项目?

Posted

技术标签:

【中文标题】如何像管理面板一样在 Django 的外键中添加新项目?【英文标题】:How to add new item in foreign key in Django like the admin panel? 【发布时间】:2017-06-25 15:00:05 【问题描述】:

在 Django 管理面板的下拉列表右侧有一个小的 + 符号,可以让我在弹出新窗口后添加新项目。之后它会自动选择。如何在 Django 中对我的表单执行此操作?我很喜欢使用 jQuery。

【问题讨论】:

Lightbox 或fancybox 可以胜任这项工作,因为您对jQuery 很熟悉。 我可以添加新的外键项并将它们动态添加到部分填写的表单中而不加载页面吗? 【参考方案1】:

假设您正在处理一个项目,其中有一个名为 Book and Author 的模型。图书有外键到作者。

    在图书创建/更新页面,放+按钮,点击“+”,在fancybox中打开作者创建表单。 成功创建作者后,将fancybox重定向到包含一些javascript的页面。那个js应该调用一个写在主页面上的函数。 window.parent.myFunction(newauthorid, newauthorname) 应该可以工作 在父页面中的 js 中,将新选项添加​​到下拉列表中。

【讨论】:

我可以使用 Bootstrap modal 代替 fancybox 吗? @MiniGunnR 如果使用bootstrap modal,需要使用ajax提交作者创建表单。作者创建表单验证可能会成为一个头疼的问题。如果您想出一种更简单的方法来使用 modal 实现这一点,也请告诉我们。【参考方案2】:

也许这会有所帮助:https://github.com/sontek-archive/django-tekextensions

“由于管理界面已经实现了所有功能,我们可以......重用他们的代码而不是重新发明***”

【讨论】:

以上是关于如何像管理面板一样在 Django 的外键中添加新项目?的主要内容,如果未能解决你的问题,请参考以下文章

django admin中的外键表单字段

如何从对象的外键中获取对象的值?

SQL中怎么向外键中插入数据

使用 Django,如何添加引用同一个表的外键列? [复制]

Django:如何在手动表单字段中显示模型的外键对象作为选择

django 管理列表中的外键显示