我正在寻找将自定义操作添加到 Django 管理员更改页面的方法。我不是在寻找可以添加到概览下拉框中的操作。
我的 Django 应用程序中的一个模型包含有关文档的信息,这些信息会在前端自动编译为 PDF 文件。我想让管理员可以直接从更改页面快速呈现 PDF,以便能够快速检查结果。
我已经玩过覆盖change_form.html/submit_line.html,添加按钮绝对没有问题。但我想知道如何以一种干净的方式扩展管理模块,以便它包含我的自定义操作。
我正在寻找将自定义操作添加到 Django 管理员更改页面的方法。我不是在寻找可以添加到概览下拉框中的操作。
我的 Django 应用程序中的一个模型包含有关文档的信息,这些信息会在前端自动编译为 PDF 文件。我想让管理员可以直接从更改页面快速呈现 PDF,以便能够快速检查结果。
我已经玩过覆盖change_form.html/submit_line.html,添加按钮绝对没有问题。但我想知道如何以一种干净的方式扩展管理模块,以便它包含我的自定义操作。
由于自定义管理视图基本上只是普通视图,因此没有太多特色。为了更清洁的集成,您应该考虑以下几点:
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
具有适当内容类型的 a 而不是使用 a 呈现响应Context
,因此不需要它。总而言之,current_app
只有当您将自定义视图使用的管理模板子类化时才有意义,该模板实际上在current_app
某处使用。
该示例将 url 和视图封装在ModelAdmin
. 也可以通过AdminSite
子类来做到这一点,但至少在您的用例中,这可能是矫枉过正。
顺便说一句,覆盖change_form.html
您的应用程序的模板以将按钮添加到标准更改视图就可以了。管理员中没有专门的 api(不幸的是)。