关于odoo自定义分析报表,数据展示的问题。
-
最近在做自定义分析报表相关内容,目前的解决方案是,把一个查询视图(report_view)作为一个单独的模型,查询结果(report_result)作为一个的模型模型,报表每次展示,都是先清空report_result中的数据,从report_view中查询出结果,然后再插入到report_result中,最终用report_result模型作为报表展示,但是这样数据量一旦多起来,速度会非常慢,我想问一下,odoo能不能把 sql查询的数据 直接展示到模型中,类似 ajax请求数据,展示在前端这种方式。
-
你的理解是错误的。report_view本来就是SQL查询
-
此回复已被删除!
-
@digitalsatori report_view 是一个视图,里面的所有数据都是全的(没有查询条件过滤),report_result是通过查询条件对report_view进行查询 得到的结果,现在查询结果 有了(数据结果和查询sql 都有),问题是怎么展示到前端,我现在 只能通过 清空report_result,然后把得到的查询结果 逐条插入到report_result中,这样让 odoo 自动显示出来。 我是想问 有没有什么方式 可以不用 在数据库 进行插入操作,直接将 展示结果 展示到前端。
-
我估计你的report_result模型是设了类属性
_auto = False
,而report_view是定义在init
方法中的。如果是这样,那么这个就是Odoo的标准的report定义方法。模型(比如report_result)并不一定要与数据库的表关联,它也可以与SQL View关联(通过上述表述的方式)。SQL View数据库视图并不是普通的数据库表,它本身并不存储数据,它实际就是对数据库表的Sql查询结果集。
@franciewang 在 关于odoo自定义分析报表,数据展示的问题。 中说:
从report_view中查询出结果,然后再插入到report_result中,最终用report_result模型作为报表展示
你对报表数据的运算流程的描述是错误的。如果认为有性能问题,需要提供性能瓶颈的依据,不是靠这样猜测的。
-
此回复已被删除!
-
@digitalsatori 非常 感谢!!!豁然开朗
-
@digitalsatori 我还有两个疑问,请教一下:
-
如果把report_result用init方法 加载,那 是不是 只有升级的时候才会 改动,我希望每次点查询 都可以 执行一下 sql ,然后展现出来,这个可以实现么?
-
不用的用户,要同时进行查询,如果 两个人的查询条件不同,那么对应的 生成数据的 sql 就有所不同,对应生成的 报表会不会 有冲突?
-
-
“数据库视图”(SQL VIEW)也可以理解为“虚拟表”,它是对数据库一个或多个表的查询结果集。结果集的内容会自动根据其查询表的数据的更新而更新。
Odoo的report就是基于这个“虚拟表”的数据根据不同用户所设定的查询条件返回并展示不同的数据结果。