添加自定义Django管理员操作

sts*_*ler 12 python django django-admin

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

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

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

Dir*_*ler 5

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

  • 通过添加URL模式get_urls()AdminSite.
  • 提供current_app参数RequestContextContext在渲染模板时提供参数,该模板是admin模板的子类.

编辑:

在这里找到了一个例子:http: //shrenikp.webs.com/apps/blog/show/5211522-add-custom-view-method-for-django-admin-model-

注意,该示例不使用current_app我提到的参数.我想您生成PDF的视图只返回一个HttpResponse具有适当内容类型而不是使用a呈现响应Context,因此不需要它.总而言之,current_app当您对自定义视图使用的管理模板进行子类化时,实际上可以使用current_app某个地方.

该示例将URL和视图封装在一个ModelAdmin.也可以通过AdminSite子类来做到这一点,但至少在你的用例中这可能是矫枉过正.

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