添加自定义 Django 管理操作
Posted
技术标签:
【中文标题】添加自定义 Django 管理操作【英文标题】:Add custom Django admin action 【发布时间】:2013-01-26 12:21:14 【问题描述】:我正在寻找向 Django 管理员更改页面添加自定义操作的方法。我不是在寻找可以添加到概览下拉框中的操作。
我的 Django 应用程序中的一个模型包含有关文档的信息,这些信息会在前端自动编译为 PDF 文件。我想让管理员可以直接从更改页面快速呈现 PDF,以便能够快速检查结果。
我已经玩过覆盖change_form.html/submit_line.html,添加按钮绝对没问题。但我想知道如何以一种干净的方式扩展管理模块,以便它包含我的自定义操作。
【问题讨论】:
【参考方案1】:由于自定义管理视图基本上只是普通视图,因此没有太多特色。为了实现更简洁的集成,您应该考虑以下几点:
通过get_urls() 的AdminSite
添加url 模式。
在呈现作为管理模板子类的模板时,将current_app
参数提供给RequestContext
或Context
。
编辑:
在这里找到了一个例子: http://shrenikp.webs.com/apps/blog/show/5211522-add-custom-view-method-for-django-admin-model-
请注意,该示例没有使用我提到的current_app
参数。我想您生成 PDF 的视图只返回具有适当内容类型的 HttpResponse
,而不是使用 Context
呈现响应,因此不需要。总而言之,current_app
仅在您将自定义视图使用的管理模板子类化时才有意义,该模板实际上在某处使用了current_app
。
该示例将 url 和视图封装在 ModelAdmin
中。也可以通过 AdminSite
子类来做到这一点,但至少在您的用例中,这可能是矫枉过正。
顺便说一句,为您的应用覆盖change_form.html
模板以向标准更改视图添加一个按钮就可以了。管理员中没有专门的 api(很遗憾)。
【讨论】:
谢谢,但我想我只是没有足够的经验来利用你的答案。网络上是否有任何示例?以上是关于添加自定义 Django 管理操作的主要内容,如果未能解决你的问题,请参考以下文章