视图对象公开了多个字段,除非另有说明,否则它们是可选的。
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:
- 如果视图具有父级视图,父级视图将被完全解析,然后应用当前视图的继承规范
- 如果视图没有父级视图,则它的 arch别当作父级视图
- 当前视图模式为 的子视图将被查找,且它们的继承规范被深度优先的应用(一个子视图被应用,然后是它的子视图,然后才说它的兄弟视图)
应用子视图的结果产生了最终的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
的属性。如果不存在这样的属性,则会引发错误
一个视图的规格按顺序应用
列表视图
列表视图的根元素是。列表视图的根可以具有以下属性:
editable
默认情况下,选择列表视图的行将打开相应的窗体视图。editable
属性使列表视图本身可以就地编辑。
有效值是top和bottom,使新记录分别出现在列表的顶部或底部。
内联表单视图的体系结构是从列表视图派生的。在表单视图的字段和按钮上有效的大多数属性都是由列表视图接受的,但如果列表视图不可编辑,则它们可能没有任何意义
default_order
重写视图的顺序,替换模型的默认顺序。T值是一个逗号分隔的列表字段,以 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