一:视图标签等公共结构

  • name (必选) 用于通过名字查找标签
  • model: 与view相关联的model
  • priority 当搜索查找view时,优先级最低的view会被返回
  • arch 视图layout的描述
  • groups_id 指定可查看、使用视图的用户组id,many2many关系
  • inherit_id 当前视图的父级视图
  • mode 继承模式,当inherit_id没有设置时,它的值是primary,当设置了inherit_id后,它默认值是extension,可手动设置为primary
  • application 定义哪些视图可以被切换,默认情况下所有视图都可以

二:视图继承

一个定位元素组成,用来匹配父视图中被继承的元素   和 子视图中会被用来修改的继承元素
一共有三种用来匹配目标元素的定位元素:

  • 带有expr属性的xpath元素 ,expr是一个用在arch中的xpath表达式,找到的第一个节点就是匹配结果
  • 带有name属性的field元素,匹配第一个一样name的field元素,其他的属性在匹配时被忽略
  • 其他的元素:匹配第一个拥有一样的name及其他属性的元素(忽略position,version属性)

通过可选的position属性来指定如何修改匹配的节点

    • inside(默认) - 添加到匹配的节点前
    • replace - 替换匹配的节点
    • after - 添加到匹配的节点的父节点之后
    • before - 添加到匹配的节点的父节点之前
    • attributes - 继承的内容是一系列拥有name属性的attribute 元素,且有可选的内容主体
      1.如果attribute有内容主体,就在匹配的节点上添加以name命名的、以内容主体为值的属性
      2.如果attribute没有内容主体,就将匹配节点上名字为name的属性删除,如果没有对应的属性,抛出一个错误

三:列表视图

列表视图的根元素是<tree>,它可以有以下几种属性:

editable

默认情况下选择单行记录时会打开对应记录的表单,该属性让数据可以在列表内进行编辑,有效的值是top和bottom,可让新的记录出现在列表的顶部或底部

default_order

重定义视图的排序规则,以逗号分隔多个字段,可使用desc来进行倒序<tree default_order="sequence,name desc">

decoration-name

可以根据值来改变字段的显示,$name可为bf (font-weight: bold), it (font-style: italic)或其他bootstrap样式如danger, info, muted, primary, success,warning,取值为python表达式,对每条记录执行相应表达式,当结果为true的时候将对应的样式应用。

create, edit, delete

可以通过将它们设置为false来禁用视图中的对应操作

on_write

只当启用editable时有用,在调用时会传给函数新增或修改后的记录,该函数需要返回一个用于更新列表的记录id列表。

tree视图中的元素:

button

属性列表:
1.icon -- 用来展示按钮的图标
2.string -- 当没有icon的时候,button显示的文字,有icon的时候、相当于alt属性值
3.type -- 按钮类型,表示点击它之后如何影响系统
1)workflow(默认):将按钮name作为信号发送给工作流,记录的内容作为参数
2)object : 调用当前数据列表模型的方法,方法名是按钮的name,调用时带有记录id和当前上下文环境
3)action : 加载ir.actions,按钮name是该action在数据库的id,上下文环境扩展到列表的model(作为active_model)、当前记录(active_id)、所有当前加载记录的id(active_ids)
4.name,args 与type一样
5.attrs 基于记录值的动态属性,将domain表达式应用在记录上,当返回值为True的时候设置相应的属性,一般用于invisible (隐藏按钮)、readonly (禁用按钮但显示)这两种属性
6.states invisible属性attrs的简写,给出一个以逗号分隔的state列表,需要模型有一个对应的state属性,可以将不在state列表中的记录的按钮隐藏
7.context 当响应odoo的调用时,合并到视图的上下文环境中
8.confirm 当点击按钮时给出的确认消息

field

属性列表:
1.name 需要显示的字段名
2.string 该列的名称
3.invisible 查询而且保存该字段但不显示
4.groups 可以看到该字段的用户组列表
5.widget 用来展示该字段的可选形式 progressbar 进度条用于展示浮点数
many2onebutton当关联字段值存在时显示勾,不存在显示X
handle对于排序字段,直接显示向上向下箭头
sum, avg 在底部显示基于当前页面数据的计算
attrs 基于记录值的动态属性,只对当前栏有效,即可以第一条记录中该字段显示,第二条隐藏

field的值支持用eval语法来运算某个表达式获得:例如:<field name="user_id" eval="ref('base.group_user')" />
 

四:表单视图

1.notebook

定义一个tab块,每一个tab通过一个page子元素定义,每个page可以有以下属性:

  • string (required) --tab标签的名称
  • accesskey --html accesskey
  • attrs --基于记录值的动态属性

2.group

用于定义栏目在表单中布局,默认情况下一个group定义两个列,并且每个最直接的子元素占用一个列,field类型的元素默认显示一个标签
group占用的列数是可以通过col属性自定义的,默认2个;其他元素可以通过colspan属性来定义占的列数,子元素是横向布局的,可以通过设置string 属性来定义group所展示的标题

3.newline

只在group元素里才有用,代表开启新的行

4.separator

一条水平线,可以通过string属性来设置该区域的标题

5.sheet

可以用作form的子元素用来表示更加狭义的表单

6.header

与sheet一起使用,显示在sheet的上方的一个条,一般用于显示工作流和状态栏

7.field

展示当前记录的某个字段,有以下属性:

  1. name (必选) -- 用于展示字段名
  2. widget -- 每个字段根据其数据类型有一个默认的展示方式,widget属性可指定用一个别的方式来展示
  3. options -- 用于指定widget字段配置的json对象
  1. class -- 用于设置当前元素的html class属性:
  2. oe_inline - 防止它自动将之后的字段换行
    oe_left, oe_right - 相当于css的float浮动
    oe_read_only, oe_edit_only - 只在相应的模式下展示该字段
    oe_no_button - 不为many2one字段显示导航按钮
    oe_avatar - 当该字段为图片时,将它展示为头像(90*90的正方形)
  1. groups - 只将该字段展示给指定用户组
  2. on_change - 在字段值改变时调用对应方法,从8.0开始改用模型中的 odoo.api.onchange()
  3. attrs - 基于记录值的动态参数
  4. domain - 当以选择的方式显示关联字段时,用过过滤数据
  5. context - 用于关联字段,显示数据时提供上下文环境
  6. readonly - 该字段可在读和编辑模式下展示,但是永远是不能编辑的
  7. required - 当该值没有设置就保存时给出一个错误提示并阻止保存
  8. nolabel - 不显示字段的标签,只有在该字段是group子元素时用意义
  9. placeholder - 字段值为空时展示的提示
  10. mode - 对于one2many字段,用于展示其关联的记录的形式,有tree, form, kanban , graph,默认是tree
  11. help - 当将鼠标放在字段或标签时显示的提示
  12. filename - 对于二进制的字段,相关字段给出文件名
  13. password - 表示该字段是一个密码,不明文展示

五:日历视图

日历视图按天、周、月来显示数据,根元素是calendar,有以下属性:

  • date_start (必选) -- 储存开始时间的字段
  • date_stop -- 储存结束时间的字段,当提供了该字段时记录可以直接在视图中删除
  • date_delay -- 与date_stop类似,表示的是该事件的持续时间
  • color -- 用于定义颜色的字段,颜色字段值相同的记录会在视图中以相同的颜色显示
  • event_open_popup -- 以弹框代替表单来打开事件,默认是禁用的
  • quick_add -- 允许快速添加事件,只需要提供name就行,当创建失败时会转到一个完整的表单弹出框
  • display -- 将字段名用[]包裹展示
  • all_day -- 布尔型,用来定义对应事件是否是全天有效
  • mode -- 默认的显示模式:day, week, month

六:甘特图

甘特图用于展示甘特图表,根元素是gantt,没有子元素,但可以有以下属性:

  • date_start (必选) -- 储存开始时间的字段
  • date_stop -- 提供结束时间的字段,可以用date_delay来实现同样的作用,两者必须提供一个,如果该字段被设置为False,那该事件的开始时间和结束时间是同个时间点
  • date_delay -- 提供事件持续时间的字段
  • duration_unit -- 持续时间的单位,minute, hour (默认), day, week, month, year
  • default_group_by -- 任务分组的依据字段
  • type -- gantt(默认) 传统甘特图、 consolidate(首个child的值被合并甘特图任务中)、planning(children会自动显示到甘特图任务中)
  • consolidation -- 在记录单元格中用于显示合并值的字段名
  • consolidation_max -- 数据字典,表示超过一定的值会标红显示 ,如:{"user_id": 100}
  • string -- 展示在合并值旁边的字符,如果没设置会自动取对应字段的label
  • fold_last_level -- 如果设置了该属性,最后一个分组级别会被折叠
  • round_dnd_dates -- 开始和结束时间取整
  • drag_resize -- 任务调整,默认True

七:搜索视图

field

field使用用户提供的值来定义domain表达式和上下文环境,当产生搜索domain表达式后,会与field提供的表达式使用and进行合并作用,可有以下几种属性:

  • name -- 需要过滤的字段名
  • string -- 字段的label
  • operator -- 默认情况下field会生成[(name, operator, provided_value)]格式的表达式,其中name是字段名,provided_value是用户提供的值,operator属性可以重写默认的运算符(默认情况下是根据字段类型分配,数字型是=,字符型是ilike)
  • filter_domain -- 用于搜索的完整的domain表达式,可以用self变量来将提供的值注入,当operator和filter_domain同时赋值时,filter_domain有最高优先级
  • context -- 允许添加上下文的值
  • groups -- 使该字段只对某些用户组可用
  • widget -- 使用指定的搜索部件(唯一的用例是V8的many2one字段选择插件)
  • domain -- 如果字段提供自动完成时(many2one),过滤出可能的自动完成结果

filter

过滤器搜索视图里是被预定义的,只能被启用或禁用。主要用于将数据添加到搜索的上下文环境或者添加新的片段到搜索filter,有以下属性:

  • string (required) -- 过滤器的label
  • domain -- 一个domain表达式,被添加到action的domain表达式中,作为搜索的domain表达式一部分
  • context -- 一个python格式数据字典,被合并到action的domain表达式中,用于生成搜索的domain表达式
  • name -- 过滤器的逻辑名
  • help -- 过滤器的描述文字
  • groups -- 指定过滤器可用的用户组

separator

用于将多组过滤器分开,一般用于很简单的视图里

group

也是用于分离多组过滤器,在复杂的视图中比separator更加易读

默认搜索

搜索字段和过滤条件可以通过action的context使用search_default_name 配置,对于字段就是需要搜索的值,对过滤器它是一个布尔值:

{
'search_default_foo': 'acro',
'search_default_bar': 1
}
#自动激活bar过滤器,并在foo字段搜索acro

odoo开发教程十一:视图综述的更多相关文章

  1. odoo开发笔记 -- 搜索视图继承扩展

    odoo开发笔记 -- 搜索视图继承扩展

  2. odoo开发笔记--from视图隐藏顶部&tree视图保留

    场景描述: 开发过程中,有时候我们需要去除odoo自带的一些样式, 比如,form视图,要集成自定义的界面时,就希望把顶部的服务动作 和 分页按钮 隐藏掉. 处理方式: 分两种情况: 1. 保留顶部区 ...

  3. odoo开发笔记 -- odoo10 视图界面根据字段状态,动态隐藏创建&编辑按钮

    场景描述: 解决方式: 网络搜索,vnsoft_form_hide_edit 找到了这个odoo8的模块, odoo10语法和视图界面有新的变化,所以需要修改一些地方,感兴趣的小伙伴可以对比下两个代码 ...

  4. odoo开发笔记--form视图自定义

    form视图自定义的两种场景: 1. 自己重写form视图样式文件 2. form视图,嵌入第三方的系统.

  5. odoo开发笔记 -- tree视图按指定字段group_by分组显示

    注意点: view视图文件中的搜索视图要放在action视图的前边. 在action视图中,要写search_view_id, 还有context, search_default_group_by_字 ...

  6. odoo开发笔记--form视图按钮样例

    如图: 对应后台views视图,class可选内容值: class="oe_highlight" class="btn-xs" class="btn- ...

  7. iOS 11开发教程(二十一)iOS11应用视图美化按钮之实现按钮的响应(1)

    iOS 11开发教程(二十一)iOS11应用视图美化按钮之实现按钮的响应(1) 按钮主要是实现用户交互的,即实现响应.按钮实现响应的方式可以根据添加按钮的不同分为两种:一种是编辑界面添加按钮实现的响应 ...

  8. iOS 11开发教程(十一)了解iOS11应用视图

    iOS 11开发教程(十一)了解iOS11应用视图 在iPhone或者iPad中,用户看到的和摸到的都是视图.视图是用户界面的重要组成元素.本节将主要讲解视图的添加.删除以及位置和大小的设置等内容. ...

  9. 第十一章 Odoo 12开发之看板视图和用户端 QWeb

    QWeb 是 Odoo 使用的模板引擎,它基于 XML 来生成 HTML 片断和页面.通过 QWeb可生成内容丰富的看板(Kankan)视图.报表和 CMS 网页.本文中我们将学习QWeb 语法以及如 ...

  10. 第十章 Odoo 12开发之后台视图 - 设计用户界面

    本文将学习如何为用户创建图形化界面来与图书应用交互.我们将了解不同视图类型和小组件(widgets)之间的差别,以及如何使用它们来提供更优的用户体验. 本文主要内容有: 菜单项 窗口操作(Window ...

随机推荐

  1. 卡特兰路径和q,t-enumeration 学一半的笔记

    目录 卡特兰 The1st q-analogue of \(C_n\) The 2nd q-analogue of \(C_n\) /定义\(C_n(q)\) The q-Vandermonde co ...

  2. java数组使用、Arrays类使用 、排序方法

    数组使用 数组的基本使用: package charpter4; public class ArrayDemo2 { public static void main(String[] args) { ...

  3. 抽象同步队列AQS原理和实践

    AQS简述 AQS是一个FIFO的双向队列,队列元素类型为Node(也就是Thread).AQS有一个state属性,ReentrantLock可以用来便是当前线程获取锁的可重入次数:对于samaph ...

  4. 2020寒假学习笔记12------Python基础语法学习(一)

    代码的组织和缩进 Python 语言直接通过缩进来组织 代码块."缩进"成为了 Python 语法强制的规定.缩进时,几个空格都是允许的,但是数目必须统一.我们通常采用" ...

  5. 这几个SQL语法的坑,你踩过吗

    本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...

  6. CISCN2021东北赛区-Maple_root-WriteUp

    参赛队员: x0r,b477eRy,f1oat 总结 最终成绩:3627 最终排名:13 一血数量:3 本次比赛前期一切顺利,后期感觉被py爆了,结果名次就拉了下来,整体题目全部都偏向MISC,打的很 ...

  7. 1.UML之类图

    前言 在实际软件开发中,很多人都忽视了先设计后编码的理念,特别是像我这样的新手菜鸟:但在我亲戚的指导下,我便开启了一个简单项目的先设计关卡. 今天的重中之重---UML,学习了它,我们在编写项目代码时 ...

  8. CTFshow愚人杯-被遗忘的反序列化

    这题虽然只有100的分值,但是我觉得它涉及到的东西还蛮多的,写个随笔记录一下. 题目 <?php # 当前目录中有一个txt文件哦 error_reporting(0); show_source ...

  9. 1778D Flexible String Revisit

    1778D Flexible String Revisit 目录 1778D Flexible String Revisit 题目大意: 做法: dp 注意 code 题目大意: 给你两个长度均为\( ...

  10. 【介绍】C++五种迭代器

    目录 1. 输入迭代器(Input Iterator): 2. 输出迭代器(Output Iterator): 3. 前向迭代器(Forward Iterator): 4. 双向迭代器(Bidirec ...