添加自定义Django管理操作

2024-09-29 01:24:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: 文件django方法文档模型form信息应用程序
1条回答
网友
1楼 · 发布于 2024-09-29 01:24:17

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

  • 通过AdminSiteget_urls()添加url模式。
  • 在呈现子类管理模板的模板时,请为RequestContextContext提供current_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

该示例将url和视图封装在ModelAdmin中。也可以通过AdminSite子类来实现这一点,但至少在您的用例中,这可能是过分的。

顺便说一下,重写change_form.html模板,让你的应用程序向标准更改视图中添加一个按钮就可以了。在管理员中没有专门的api(不幸的是)。

相关问题 更多 >