在管理界面上向 Django 内联对象添加自定义操作

Posted

技术标签:

【中文标题】在管理界面上向 Django 内联对象添加自定义操作【英文标题】:Add custom action to Django inline object on the admin interface 【发布时间】:2012-09-15 23:47:39 【问题描述】:

我有一个管理界面,里面有一篇博文,内联模型是博文的早期版本。

我想为以前的每个版本添加一个操作(一个还原操作,自定义模型方法)

我应该怎么做呢? 它有点类似于 ModelAction 动作关键字,但我希望它在模型视图中,而不是列表视图中 并且它适用于每个内联模型,而不是父模型

希望得到一些帮助。

使其更清晰

我的 previous_version 类有一个名为 revert 的函数。我想要的是,在每个先前版本的管理面板中我的博客文章视图中,我都会有一个链接或按钮或其他东西。按下它会调用 previous_version.revert。

【问题讨论】:

【参考方案1】:

我想正确的做法是文档中描述的管理员操作 -

https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/

【讨论】:

这不是我要找的。 django 管理操作用于与对象列表(在我的情况下是博客文章列表)进行交互。我想在单个博客文章视图中有一个按钮。实际上,我通过覆盖模板做了一个小技巧,但我正在寻找更好的方法。【参考方案2】:

您可以使用操作 revert 扩展博客 ModelAdmin。

覆盖内联模型模板以添加按钮,就像您说的那样,您已经这样做是一种很好的方法。

请务必将创建的视图包装在 admin_view 中并只允许发布请求。

【讨论】:

以上是关于在管理界面上向 Django 内联对象添加自定义操作的主要内容,如果未能解决你的问题,请参考以下文章

在 Django admin 中添加内联多对多对象

Django 管理员自定义验证 - 至少需要一个内联外键模型

python Django:向管理员更改列表视图添加自定义按钮

向Django Admin添加键盘快捷键功能

添加自定义 Django 管理操作

Python 3 Django Rest Framework - 如何向这个 M-1-M 模型结构添加自定义管理器?