Django 报告选项
我想使用 Django 框架创建一个新的业务应用程序。 关于我可以使用什么作为报告框架有什么建议吗? 该应用程序需要生成有关各种业务实体的报告,包括摘要、总计、分组等。基本上,Django/Python 是否有类似于 Crystal reports 的等效项?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
djangopackages.com 上有一个网格,可用于评估选项:
https://www.djangopackages.com。 djangopackages.com/grids/g/reporting/
There is a grid on djangopackages.com which may be of use evaluating options:
https://www.djangopackages.com/grids/g/reporting/
我制作了 django-report-builder。 它允许您使用 GUI 构建 ORM 查询并生成电子表格报告。 它不能做模板,但这将是一个很好的功能。
I made django-report-builder. It lets you build ORM queries with a gui and generate spreadsheet reports. It can't do templates, that would be a great feature to add though.
根据 @s-lott 的建议,您可以使用代理模型、具有自定义
changelist_view()
的模型管理类以及派生自admin/base_site 的自定义模板,将报告添加到管理站点.html
。假设 Django v2.1(用于模型视图权限)和一个经典的客户、产品和销售域,这是一个完整的示例:
changelist_view()
返回报告视图,将其包装到admin_site.admin_view()
中以防止未经授权的访问删除添加、更改、删除权限,以便仅保留查看权限并保护更改和历史视图:
sales_report()
视图的帮助程序和导入如下:sales/report.html
,派生自admin/base_site.html
使用管理布局:现在,该报告将在管理索引页面中列出,并带有仅供查看的图标
Building upon @s-lott's suggestion, you can add reports to the admin site using a proxy model, a model admin class with custom
changelist_view()
and a custom template that derives fromadmin/base_site.html
.Assuming Django v2.1 (for model view permissions) and a classic customers, products and sales domain, here's a full example:
changelist_view()
, wrapping it intoadmin_site.admin_view()
to protect it from unauthorized accessRemove add, change, delete permissions so that only view permission remains and protect change and history views:
Helpers and imports for the
sales_report()
view are as follows:sales/report.html
, deriving fromadmin/base_site.html
to use the admin layout:Now the report will be listed in admin index page with view-only icon ????, it is protected from unauthorized access and has a consistent look with the rest of the admin site.
这些只是具有普通视图功能的 HTML 模板。
这不需要太多:参数来自表单; 在视图函数中编写查询,将查询集传递给模板。 模板呈现报告。
为什么你需要比这更多的东西?
您可以使用 通用列表/详细视图< /a> 以避免编写大量代码。 如果您采用此路线,则可以将查询集和模板提供给通用视图,该视图会为您处理一些处理。
由于您必须在 Crystal 报告或 Django 中编写查询,因此您并没有真正从“报告”工具中获得太多优势。
These are just HTML templates with ordinary view functions.
This doesn't require much: Parameters come in from a form; write the query in the view function, passing the queryset to the template. The template presents the report.
Why would you need something more than this?
You can use generic list/detail views to save yourself from having to write as much code. If you go this route, you provide the query set and the template to a generic view that handles some of the processing for you.
Since you must write the query in Crystal reports or Django, you're not really getting much leverage from a "reporting" tool.
编辑
看起来确实两个包都消失了,但现在我们有了一个很好的数据结构,这是从 R 借来的 - DataFrame
快速教程(注意“分组”部分)
我不知道 Django(或 Python)的完整报告解决方案,但是无论有或没有 ORM,使用 Django 进行报告都非常容易:
就我个人而言,我使用 django-tables 和 nore 的 datashaping python 包进行快速摘要/avg/median/IQR/过滤东西,因为我有许多不同的数据源(REST 数据、两个 mysql 数据库、R 中的 csv 文件),现在 django 数据库中只有很少的数据源。
Pycha 是我绘制简单图表的候选人之一。
我不喜欢客户端基于 ajax 的网格等进行报告,但您也可以将它与 django 模板一起使用。
Edit
It really looks like both packages are gone, but now we have a nice data structure, borrowed from R -- DataFrame in pandas package
Quick tutorial (pay attention to section "Grouping")
I don't know about complete reporting solution for Django (or Python), but make reporting with Django is quite easy with or without ORM:
Personally I use django-tables and neithere's datashaping python package for quick summary/avg/median/IQR/filtering stuff because I have many different data sources (REST data, two mysql dbs, csv files from R) with only few of them in django db now.
Pycha is one of candidates for me to draw simple charts.
I don't like client-side ajax-based grids etc for reporting, but you can use it with django templates too.