在报表中展示数据
来自Odoo大V社-odoo中文开发手册
2355481564(讨论 | 贡献)2018年1月4日 (四) 09:33的版本
不同于看板视图,报表中的QWeb模板是被服务器端用Python解析QWeb后渲染的。我们可以看到这两个完成了相同的规范,但有一些差异我们需要注意的。
首先,QWeb表达式是使用Python语法解析的,不是JavaScript。最简单的表达式,有很少或根本没有区别,但更复杂的操作可能会不同。
表达式的解析方式也是不同的。报表中,我们有以下变量:
·docs 是迭代器,包含所有待打印的数据集 ·doc_ids 是一个包含所有待打印数据集ID的列表 ·doc_model 是数据集关联的模块标识,如todo.task ·time 是Python时间库的引用 ·user 是运行报表的用户的数据记录 ·res_company 是当前用户的公司的数据记录
报表内容是用HTML编写的,字段值可以使用t-field属性来引用,t-field-options属性可以使用特定的小部件来呈现字段内容。
现在我们可以开始为报表设计页面内容了:
<!-- Report page content <div class="row bg-primary"> <div class="col-xs-3"> <span class="glyphicon glyphicon-pushpin" /> What </div> <div class="col-xs-2">Who</div> <div class="col-xs-1">When</div> <div class="col-xs-3">Where</div> <div class="col-xs-3">Watchers</div> </div> <t t-foreach="docs" t-as="o"> <div class="row"> <!-- Data Row Content --> </div> </t>
内容的布局可以使用Twitter的Bootstrap HTML网格系统。简单来说,Bootstrap有一个包含12个列的网格布局。可以使用<div class="row">添加一个新行。在一行中,我们有单元格,每个单元格都有确定数字,最大为12。每个单元可以定义为<div class="col-xs-N ">,其中N为它跨越列的数目。