添加自定义Django管理员操作

时间:2013-02-11 12:04:33

标签: python django django-admin

我正在寻找向Django管理员更改页面添加自定义操作的方法。我正在寻找可以添加到概述中下拉框中的操作。

我的Django应用程序中的一个模型包含有关文档的信息,并且这些模型会自动编译为前端的PDF文件。我想让管理员直接从更改页面快速呈现PDF,以便快速检查结果。

我已经玩过覆盖change_form.html / submit_line.html,添加按钮绝对没问题。但我想知道如何以干净的方式扩展管理模块,以便它包含我的自定义操作。

1 个答案:

答案 0 :(得分:5)

由于自定义管理员视图基本上只是普通视图,因此没有太多专业。为了更清洁的集成,您应该考虑以下几点:

  • 通过AdminSite。{/ li>的get_urls()添加网址格式
  • 在呈现管理模板子类的模板时,向current_appRequestContext提供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

该示例将网址和视图封装在ModelAdmin中。也可以通过AdminSite子类来完成此操作,但至少在您的用例中这可能是过度的。

顺便说一句,覆盖应用的change_form.html模板以向标准更改视图添加按钮就可以了。在管理员中没有特殊的api(不幸的是)。