问题 如何将报告部分添加到Django管理员?


我想在Django admin中实现一个报告部分。这意味着在管理员主页中添加自定义部分,而不是模型列表,我会看到报告列表。我想使用Django的管理表与过滤器,排序,如果可能的话,一切。

实现这一目标的“最佳”方式是什么?我意识到这是一个“大”的问题所以我不是必须要求代码片段,所需操作的摘要会很好:)

附:报告我的意思是通过自定义查询(查询集或如何调用它)的“组合”模型。

P.S.2也许这个问题应该是这样的:如何在自己的管理视图中使用Django管理表功能?

P.S.3或者也许有一种方法可以向现有的管理界面提供我自己的数据。这样我就不必做任何其他事情了。我只是想说而不是一个模型拿这个数据并将它显示在一个很好的表中,我可以对它进行排序,过滤等等。


1184
2017-11-03 15:13


起源

你是什​​么意思“报告清单”?你有什么特定的报告吗? - Calvin Cheng
你是什​​么意思 报告?您可以使用django准备自定义页面并制作任何您想要的任何内容。但是在这样的视图和模板中使用默认的django过滤器是不可能的。但您可以轻松编写我们的过滤器。如何 跳过管理员索引页面并转到特定的一个 - FallenAngel
我的意思是你现在已经在Django管理员主页中将应用程序名称作为部分的标题(带有蓝色背景),然后是该应用程序的模型列表。我想要一个带有Reports标题的部分,然后是一个像Sales,Best Sellers这样的报告列表...几乎任何没有模型的表,但是它由一些代码组成。而不是一个真正的模型,我会有一个“弥补”模型。 - Al Bundy
你可以建立“模拟”模型: stackoverflow.com/questions/1813637/... - Al Bundy


答案:


所以你试图在django管理员中添加新页面。

本节将向您详细说明如何执行此操作 - https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-views-to-admin-sites

基本的想法是添加你想要的新网址 urls.py 好像您要为“前端”页面添加网址。关键的区别在于,您添加的这些新网址应该从一开始 ^admin/ 看起来像 ^admin/my_special_link_in_admin 并且此URL将指向您自己喜欢的位置的自定义视图功能。

例如。

(r'^admin/my_special_link_in_admin/$', 'my_custom_admin_app.views.special_admin_page'),

所以这是完全定制的方式。我在这里指的是一个非常好的教程 - http://brandonkonkle.com/blog/2010/oct/4/django-admin-customization-examples/

此外,如果您不想做太多工作,请考虑使用Django Admin Plus - https://github.com/jsocol/django-adminplus

或者django-admin-views - https://github.com/frankwiles/django-admin-views


10
2017-11-03 15:35



是的,我想要新页面,但我不想使用自己的表格模板和功能。这是一项巨大的工作! :)我希望漂亮的Django管理员也能为自定义数据工作,而不仅仅是模型数据:D - Al Bundy
对。我知道了。使用 github.com/jsocol/django-adminplus 正如我在最新的答案中所提到的 - Calvin Cheng
例如,这个管理员会不会需要编写表格排序? - Al Bundy
是。它与标准django管理功能100%兼容。所有这一切 - 如果您在这里查看其模板 github.com/jsocol/django-adminplus/tree/master/adminplus/...  - 是扩展为使用标准的django管理模板,同时允许您在自定义视图函数中编写自己的查询,您需要像这样注册 admin.site.register_view('somepath', my_view) - Calvin Cheng
我懂了。这样做,但请查看我对问题的第3次编辑。可以这样做吗?会更快更优雅。 - Al Bundy


此外,有这个不错的应用程序:

Django的管理的报告

“admin_reports”是一个Django应用程序,可以轻松创建数据聚合报告,以显示在Django admin中。

Django管理员非常关注模型,它提供了一种快速简单的方法来为CRUD界面创建GUI,但通常需要以聚合形式显示数据,这里admin_reports很方便。

这个想法是有一个类似的类 ModelAdmin (从 django.contrib.admin)允许显示专注于实现聚合过程的派生数据。


1
2018-03-09 09:39