天天看点

odoo10参考系列--视图一(列表视图)共同结构--一般视图都有的继承列表视图

共同结构--一般视图都有的

视图对象公开了多个字段,除非另有说明,否则它们是可选的。

name

 (强制性的)

        在对某个列表进行查找时,仅作为对视图的一种记忆/描述是有用的

model

        与视图关联的模型,如果适用的话(此属性不适用QWeb视图)

priority

        客户端程序可以通过 

id

请求视图,也可以通过 (model, type)来请求视图。对于后者,将搜索正确类型和模型的所有视图,并返回最低优先数的视图(它是“默认视图”)

        priority 同样定义了在视图继承中应用程序的顺序

arch

        视图布局的描述

groups_id

Many2many

字段组允许查看/使用当前视图

inherit_id

        当前视图的父视图,详见 继承 部分,设置默认

mode

        继承模式,参见 继承。如果 inherit_id设置为mode,这个mode只能是primary。如果 inherit_id设置了,默认为

extension

  但可以显示设置为primary

application

        网站功能定义的可切换视图,默认情况下,视图总是被应用的

继承

视图匹配

  •         如果视图被(model, type)请求,则正确的模型和类型、mode=primary和最低优先级的视图是匹配的
  •         当一个视图被 请求时id,如果它的模式不是

    primary

     ,那么模式为

    primary

      并和它最近的父级视图是匹配的

视图解析

视图解析为一个请求/匹配的

primary

 视图生成最中的arch:

  1.         如果视图具有父级视图,父级视图将被完全解析,然后应用当前视图的继承规范
  2.         如果视图没有父级视图,则它的 arch别当作父级视图
  3.         当前视图模式为 的子视图将被查找,且它们的继承规范被深度优先的应用(一个子视图被应用,然后是它的子视图,然后才说它的兄弟视图)

应用子视图的结果产生了最终的arch

继承规范

继承规范由元素定位器组成,用于匹配父视图中继承的元素,以及用于修改继承元素的子元素。

有三种类型的元素定位器来匹配一个目标元素:

  •         一个带有

    expr

     属性的

    xpath

    元素。

    expr

     是一个应用于当前arch 的XPath表达式,它找到的第一个节点是匹配结果
  •         一个带有field 属性的

    name

     元素,匹配第一个带有相同

    name

      属性的 field ,所有其他属性在匹配时都忽略
  •         任何其他元素:具有相同名称和相同属性(忽略

    position

     和version属性)的第一个元素是匹配的

匹配规范可以有一个可选的

position

属性来指定如何匹配可改变的节点:

inside

 (默认)继承规范的内容被附加到匹配的节点

replace

继承规范的内容替换匹配的节点,在规范的内容中只包含$0的任何文本节点都将被匹配节点的完整副本替换,从而有效地包装匹配节点

after

继承规范的内容在匹配节点之后添加到匹配节点的父节点

before

继承规范的内容在匹配节点之前添加到匹配节点的父节点

attributes

继承规范的内容应该是具有 name属性和可选主题的 

attribute

 元素:

  • 如果

    attribute

     元素有一个主体,则在匹配的节点上创建一个名为它的

    name

     的新属性,

    attribute

     元素的文本作为值
  • 如果attribute元素没有主体,则从匹配节点中删除命名为其

    name

     的属性。如果不存在这样的属性,则会引发错误

一个视图的规格按顺序应用

列表视图

列表视图的根元素是<tree>。列表视图的根可以具有以下属性:

editable

默认情况下,选择列表视图的行将打开相应的窗体视图。

editable

 属性使列表视图本身可以就地编辑。

有效值是top和bottom,使新记录分别出现在列表的顶部或底部。

内联表单视图的体系结构是从列表视图派生的。在表单视图的字段和按钮上有效的大多数属性都是由列表视图接受的,但如果列表视图不可编辑,则它们可能没有任何意义

default_order

重写视图的顺序,替换模型的默认顺序。T值是一个逗号分隔的列表字段,以 

desc

为后缀进行逆序排序:

<tree default_order="sequence,name desc">
           

colors

从版本9.0后已过时:被属性decoration-{$name}替换 

fonts

从版本9.0后已过时:被属性decoration-{$name}替换

decoration-{$name}

允许根据相应记录的属性更改行文本的样式。

值是Python表达式。对于每个记录,表达式都以记录的属性作为上下文值进行求值,如果为true,则将相应的样式应用于行。 其他上下文值是uid(当前用户的ID)和current_date(以 yyyy-MM-dd字符串形式的当前时间)。

{$name}

 可以是 

bf

 (

font-weight: bold

), 

it

 (

font-style: italic

), 或者任何bootstrap中的颜色样式名称 (

danger

,

info

muted

primary

success

 or 

warning

).

create

edit

delete

通过设置相应的属性为false来禁用视图中相应的操作 

on_write

只有在有editable属性的列表中才有意义。应该是列表模型上方法的名称。在创建或编辑该记录(在数据库中)之后,将使用记录的id调用该方法。

方法应该返回要加载或更新的其他记录的ID列表

string

为视图选择翻译的标签

从版本8.0后已过时: 不显示任何内容

列表视图中可能的子元素是:

button

显示列表单元格中的按钮

icon

用于显示按钮的图标

string

  • 如果没有 

    icon

    , 显示按钮的文本内容
  • 如果有 

    icon

    alt

     文本内容为图标

type

按钮类型,指示在点击它后如何影响Odoo:

workflow

 (默认)

向工作流发送信号。按钮的

name

 是工作流信号,该行的记录作为参数传递给信号

object

在列表的模型上调用方法。按钮的

name

 是方法,它用当前行的记录ID和当前上下文调用

action

加载一个执行ir.actions,按钮的name是动作的数据库ID。当前上下文通过列表中的模型(如active_model),当前行的记录(active_id)和所有的记录中当前加载的列表(active_ids,可能只是匹配当前搜索的数据库记录的子集)进行扩展

name

详见

type

args

详见

type

attrs

基于记录值的动态属性。

在当前行记录的上下文中,对属性到域的映射、域进行评估,如果True,则在单元格上设置相应的属性。

可能的属性是 

invisible

 (隐藏按钮)

states

速记

invisible

attrs

: 一个以逗号隔开的states列表,要求模型有一个

state

字段并被应用到视图中。

如果记录不在列出的状态中,则按钮将不可见(invisible)

危险

使用

states

 结合attrs可能会导致意想不到的结果如域通过逻辑与而联合。

context

当执行按钮的Odoo调用是合并到视图的上下文中

confirm

在执行按钮的Odoo调用之前确认消息显示(用户可接收的)

field

定义一个列,其中对应的字段应显示为每个记录。可以使用以下属性:

name

要在当前模型中显示的字段的名称。给定名称只能在每个视图中使用一次

string

字段栏的标题(默认情况下,使用模型字段的字符串)

invisible

获取并存储字段,但不显示表中的列。对于不应该显示但被使用的字段是必要的,如 

@colors

groups

列出应该能够看到字段的组

widget

对于字段的交替展示,可能的列表视图值是:

progressbar

将 

float

 类型字段展示为进度条

many2onebutton

如果加载值则此字段值用勾选的复选框替换,如果没有加载值,则替换为打叉的复选框

handle

对于

sequence

 字段, 只显示拖放图标,而不显示字段的值

sum

avg

在列的底部显示相应的合计。合计仅计算当前显示的记录上。合计操作必须匹配相应字段的 

group_operator

attrs

基于记录值的动态属性。仅对当前字段起作用,因此,例如

invisible

 将隐藏字段,但保留其他记录可见的相同字段,它不会隐藏列本身。

笔记

如果列表视图是editable,那么表单视图中的任何字段属性也都是有效的,在设置内联表单视图时将使用该字段属性

ps:有翻译不当之处,欢迎留言指正。

原文地址:https://www.odoo.com/documentation/10.0/reference/views.html

继续阅读