我正在寻找向Django管理员更改页面添加自定义操作的方法。我不正在寻找可以添加到概述中下拉框中的操作。
我的Django应用程序中的一个模型包含有关文档的信息,并且这些模型会自动编译为前端的PDF文件。我想让管理员直接从更改页面快速呈现PDF,以便快速检查结果。
我已经玩过覆盖change_form.html / submit_line.html,添加按钮绝对没问题。但我想知道如何以干净的方式扩展管理模块,以便它包含我的自定义操作。
答案 0 :(得分:5)
由于自定义管理员视图基本上只是普通视图,因此没有太多专业。为了更清洁的集成,您应该考虑以下几点:
AdminSite
。{/ li>的get_urls()添加网址格式
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
。
该示例将网址和视图封装在ModelAdmin
中。也可以通过AdminSite
子类来完成此操作,但至少在您的用例中这可能是过度的。
顺便说一句,覆盖应用的change_form.html
模板以向标准更改视图添加按钮就可以了。在管理员中没有特殊的api(不幸的是)。