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

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

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,infomutedprimarysuccess or warning).

createeditdelete

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

on_write

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

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

string

为视图选择翻译的标签

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

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

button

显示列表单元格中的按钮

icon

用于显示按钮的图标

string

  • 如果没有 icon, 显示按钮的文本内容
  • 如果有 iconalt 文本内容为图标

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 字段, 只显示拖放图标,而不显示字段的值

sumavg

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

attrs

基于记录值的动态属性。仅对当前字段起作用,因此,例如invisible 将隐藏字段,但保留其他记录可见的相同字段,它不会隐藏列本身。

笔记

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

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

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

odoo10参考系列--视图一(列表视图)相关推荐

  1. Odoo10参考系列--QWeb报表

    报表是写在HTML / QWeb中,像Odoo中的所有普通视图.你可以使用普通QWeb 流程控制工具.PDF的渲染是通过wkhtmltopdf执行的. 如果要在某个模型上创建报表,则需要定义该报表和它 ...

  2. java 计划日视图,GitHub - sddysz/calendarSchedule: 日程表,仿滴答清单,包含日视图、三日视图、周视图、月视图、列表视图、同步手机系统日程、添加日程...

    calendarSchedule 日程表,仿滴答清单,包含日视图.三日视图.周视图.月视图.列表视图 此项目是仿滴答清单做的一个日程表,现包括的功能有:日视图.三日视图.周视图.月视图.列表视图(周月 ...

  3. 树形视图和列表视图中的HitTest

     1.引言 HitTest为命中测试的意思.在使用MFC编写程序的时候,在树形视图以及列表视图中通常会涉及到需要获得鼠标当前位置所对应的元素.这种通过光标坐标位置来获得相应元素项的操作我们称之为命 ...

  4. odoo10参考系列--视图三(其他高级视图)

    图表 图表视图用于在多个记录或记录组上可视化聚合视图.它的根元素是<graph> ,可以有以下属性: type 使用bar (默认的), pie 和line三个中的一个图表类型 stack ...

  5. odoo10参考系列--视图二(表单视图)

    表单视图 表单视图用于从单个记录中显示数据.它们的根元素是<form>.它们由常规HTML组成,具有额外的结构和语义组件. 结构组件 结构组件提供了结构化的或很小逻辑的"视觉&q ...

  6. 鸡啄米vc++2010系列27(列表视图控件List Control 上)

    列表视图控件简介 列表视图控件List Control同样比较常见,它能够把任何字符串内容以列表的方式显示出来,这种显示方式的特点是整洁.直观,在实际应用中能为用户带来方便. 列表视图控件是对前面讲到 ...

  7. odoo10参考系列--ORM API 二(新旧API兼容性、模型参考和方法修饰符)

    新API与旧API的兼容性 现在的Odoo是从就的(不规律的)API过渡来的,它可能需要从一个手动桥接到另一个手动桥接: RPC层(XML-RPC和RPC)是在旧的API的形式表达,表达的纯粹的方法在 ...

  8. android表视图,android – 列表视图与表格布局

    我正在开发一个活动,其中我使用列表视图与表格布局. 我想在列表视图中显示图像和文本,但问题是图像显示略微超出列表顺序 img1 text1 img1 text1 img2 text2 and i wa ...

  9. odoo10参考系列--ORM API 一(记录集、环境、通用方法和创建模型)

    记录集 版本8.0中新东西: 这个在Odoo8.0中新加的API的页面文档应该是不断向前发展的主要开发API.同时它还提供了关于移植或桥接版本7和更早版本的"旧API"的信息,但没 ...

最新文章

  1. 计算机操作系统笔记——处理器调度
  2. 英语考试(最小生成树)
  3. linux mysql启动_MySQL 安装(二)
  4. java esclient query_elasticsearch 口水篇(4)java客户端 - 原生esClient
  5. 游戏社交不足怎么办? 游戏发行中的社交化运营经验分享
  6. vue路由(router)设置:父路由默认选中第一个子路由,切换子路由让父路由高亮不会消失
  7. JS执行一次任务与定期任务与清除执行
  8. 【Android】安卓闪电复习
  9. this指向问题 php,js中的this指向问题
  10. 装完nvme固态经常蓝屏_方案解决:NVMe SSD安装Win7蓝屏0x0000007B快速解决方案
  11. 新年新气象 新年新打算
  12. LeetCode-自除数
  13. 阿里云短信服务接口触发天级流控Permits:10
  14. HF_装饰者模式(Decorator_Pattern)_20200308
  15. HTML计算平均成绩,access计算平均值取整
  16. 深度报道 | 5G兵临城下:AIoT将面临哪些变革和挑战?
  17. mysql dlz驱动,安装wddns3 /dlz_mysql_driver.c:76:19: 错误:mysql.h:没有那个文件或目录...
  18. Xxx饭堂系统 JAVA+SQL+JDBC完成一个小项目(下篇)
  19. 身份认证技术基础知识
  20. FreeRTOS 任务简介

热门文章

  1. 绘制自己组合的k线图_短线投资者必备的四种双K线组合抄底技巧,次次选中黑马股,精准率超高...
  2. 年味十足的手绘年画风新年春节海报PSD模板
  3. 传统东方韵味尽显|国潮国风包装样机
  4. 买买买!!!电商促销必备的气氛PSD分层海报
  5. 新高考改革选计算机专业要学什么,2020高考改革后考生如何选科与选专业?
  6. 物联网专科专业必修课程_江西自考专科物联网技术专业的考试课程/科目
  7. Linux内核 eBPF基础:kprobe原理源码分析:源码分析
  8. Linux网络协议栈:用eBPF写TCP拥塞控制算法
  9. linux:errno与signum:错误码与信号
  10. __attribute__((regparm(number))):函数通过number个寄存器传递参数,否则通过堆栈