12

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

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

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

4

1 回答 1

5

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

  • 通过.get_urls()AdminSite添加url 模式。
  • 为或在呈现子类管理模板的模板时提供current_app参数。RequestContextContext

编辑

在这里找到一个例子: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(不幸的是)。

于 2013-02-11T12:27:28.047 回答