在管理界面上向 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 管理员自定义验证 - 至少需要一个内联外键模型