在报表中展示数据

来自Odoo大V社-odoo中文开发手册
2355481564讨论 | 贡献2018年1月4日 (四) 17: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为它跨越列的数目。