2013-02-11 161 views
11

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

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

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

回答

4

由于自定义管理视图基本上只是普通视图,所以没有太多特色。你应该考虑一个更清洁的整合有几件事情:

  • 通过AdminSiteget_urls()添加URL模式。
  • 提供RequestContextContextcurrent_app参数时,呈现模板的子类管理模板。

编辑

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

+0

谢谢,但我想我只是没有足够的经验来利用你的答案。网络上有没有例子? – stschindler 2013-02-11 15:37:02

+0

我已更新我的答案并添加了一个示例链接。 – 2013-02-11 16:55:34