6.高级视图
True

树视图

树视图可以采用辅助属性来进一步自定义其行为:
decoration-{$name}
  允许根据对应记录属性修改行的文本风格。对于每个记录,将使用记录的属性作为上下文来计算表达式,如果值为true,则将相应的样式应用于行。其他上下文值为uid(当前用户的标识)和current_dateyyyy-MM-dd格式的当前日期字符串)。{$name}可以是bf(font-weight:bold)it(font-style:italic)或任何bootstrap上下文颜色(danger,info,muted,primary,success,warning


已复制
editable

  topbottom使树视图可直接编辑(而不需要通过表单视图),其值就是新行出现的位置。


练习

#列表着色
编辑授课的树视图,使得持续时间少于5天的授课以蓝色显示,持续时间超过15天的授课以红色显示。编写两条数据,令其duration一条大于5一条大于15,编辑授课的树视图:

openacademy/views/openacademy.xml


已复制

日历

将记录显示为日历活动,通过将根元素设置为<calendar>,主要的属性有:
color
  字段的名称通过颜色来区分。颜色会自动分配给事件,但相同颜色定义的事件(@color属性有相同值的记录)将被使用相同的颜色。
date_start
  记录中用于保存事件开始日期/时间的字段。
date_stop(可选)
  记录中用于保存时间结束日期/时间的字段。

为每个日历事件定义标签的字段


已复制

练习

#日历视图

给授课模型添加一个日历视图,使用户可以查看与开放学院相关联的事件。

  • 添加一个计算字段end_date,通过start_dateduration计算获得。
  • 反函数使字段可写,并允许在日历视图中移动授课(通过拖放操作)
  • 向授课模型添加日历视图
  • 添加日历视图到授课模型的动作中

openacademy/models.py


已复制

openacademy/views/openacademy.xml

已复制

搜索视图

搜索视图的<field>元素可以使用@filter_domain覆盖为在给定字段上搜索而生成的域。在给定的域中,self表示用户输入的值。在下面的示例中,它用于搜索两个字段namedescription。搜索视图还可以包含<filter>元素,这些元素用作预定义搜索的切换。过滤器必须具有以下属性之一:
domain
  给搜索指定domain表达式
context
  给搜索指定上下文;使用group_by对结果进行分组。


已复制

对于非默认的搜索视图,使用search_view_id字段。而通过context字段为搜索字段设置默认值:search_default_field_name表单的上下文关键字将初始化field_name的值。搜索过滤器必须有@name选项,并且其值是布尔类型的(只能在默认情况可用)

练习

#搜索视图

  • 在课程搜索视图中添加按钮,用以筛选当前用户负责的课程,并且作为默认选择。
  • 再添加一个分组按钮,用于对当前用户负责的课程进行分组。

openacademy/views/openacademy.xml


已复制

甘特图

水平条状的甘特图通常用于显示项目计划和进度,根元素是<gantt>


已复制

练习

#甘特图

甘特图视图需要在企业版版本中存在的web_gantt模块。
添加甘特图使用户可以查看授课的日程排期,授课将按讲师分组。

  • 创建一个计算字段,表示以小时计算的授课持续时间
  • 添加甘特图,并且将甘特图添加到授课模型的action上。

openacademy/models.py


已复制

openacademy/views/openacademy.xml

已复制

图形视图

图形视图用来表示对模型的概述和分析,根元素是<graph>

注意
多维表的核心视图(根元素<pivot>)允许选择文件管理器以获得正确的图形数据库,然后再转到更多的图形视图。核心视图与图形视图共享相同的内容定义。

聚合视图有4种显示模式,通过@type属性定义。
Bar(默认值)
  条形图,第一个维度用于在水平轴上定义组,其它维度定义每个组的聚合条。默认情况下,条是并排的,也可以通过<graph>@stacked="True"来让条堆叠。
Line
  2维折线图
Pie
  2维饼图
图形视图包含的<field>元素有@type属性定义值:
row(默认值)
  该字段是聚合的
measure
  该字段是分组后聚合的


已复制

警告
图形视图只能对数据库字段进行聚合,不能对不存储在数据库的计算字段进行聚合。

练习

#图形视图
在授课对象中添加图形视图,为每个课程在条形视图下显示出席人数。

  • 添加字段将出席人数这计算字段存储在数据库
  • 添加相关图形视图

openacademy/models.py


已复制

openacademy/views/openacademy.xml

已复制

看板视图

看板视图用于任务组织、生产进度等,根元素是<kanban>。看板视图显示一组可按列分组的卡片。每个卡片表示一个记录,每列都显示聚合字段的值。例如项目任务可以按阶段(每列是一个阶段)分组或者按负责人(每列是一个用户)分组。看板视图将每个卡的结构定义为表单元素(包括基本HTML)和QWeb的混合。

练习

#看板视图
添加显示按课程分组的授课看板视图(列是课程)

  • 授课模型中添加整型字段color
  • 添加看板视图并更新action

openacademy/models.py


已复制

openacademy/views/openacademy.xml

已复制

装饰器
True