转载请注明原文地址:http://www.javashuo.com/article/p-xtqqdrbj-md.html css
一:视图标签等公共结构html
- name (必选) 用于经过名字查找标签
- model: 与view相关联的model
- priority 当搜索查找view时,优先级最低的view会被返回
- arch 视图layout的描述
- groups_id 指定可查看、使用视图的用户组id,many2many关系
- inherit_id 当前视图的父级视图
- mode 继承模式,当inherit_id没有设置时,它的值是primary,当设置了inherit_id后,它默认值是extension,可手动设置为primary
- application 定义哪些视图能够被切换,默认状况下全部视图均可以
二:视图继承python
一个定位元素组成,用来匹配父视图中被继承的元素 和 子视图中会被用来修改的继承元素
一共有三种用来匹配目标元素的定位元素:数据库
- 带有expr属性的xpath元素 ,expr是一个用在arch中的xpath表达式,找到的第一个节点就是匹配结果
- 带有name属性的field元素,匹配第一个同样name的field元素,其余的属性在匹配时被忽略
- 其余的元素:匹配第一个拥有同样的name及其余属性的元素(忽略position,version属性)
经过可选的position属性来指定如何修改匹配的节点json
- inside(默认) - 添加到匹配的节点前
- replace - 替换匹配的节点
- after - 添加到匹配的节点的父节点以后
- before - 添加到匹配的节点的父节点以前
- attributes - 继承的内容是一系列拥有name属性的attribute 元素,且有可选的内容主体
1.若是attribute有内容主体,就在匹配的节点上添加以name命名的、之内容主体为值的属性
2.若是attribute没有内容主体,就将匹配节点上名字为name的属性删除,若是没有对应的属性,抛出一个错误
三:列表视图bootstrap
列表视图的根元素是<tree>
,它能够有如下几种属性:api
editable
默认状况下选择单行记录时会打开对应记录的表单,该属性让数据能够在列表内进行编辑,有效的值是top和bottom,可以让新的记录出如今列表的顶部或底部app
default_order
重定义视图的排序规则,以逗号分隔多个字段,可以使用desc来进行倒序<tree default_order="sequence,name desc">
dom
decoration-name
能够根据值来改变字段的显示,$name可为bf (font-weight: bold), it (font-style: italic)或其余bootstrap样式如danger, info, muted, primary, success,warning,取值为python表达式,对每条记录执行相应表达式,当结果为true的时候将对应的样式应用。ide
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
展现当前记录的某个字段,有如下属性:
- name (必选) -- 用于展现字段名
- widget -- 每一个字段根据其数据类型有一个默认的展现方式,widget属性可指定用一个别的方式来展现
- options -- 用于指定widget字段配置的json对象
- class -- 用于设置当前元素的html class属性:
-
oe_inline - 防止它自动将以后的字段换行
oe_left, oe_right - 至关于css的float浮动
oe_read_only, oe_edit_only - 只在相应的模式下展现该字段
oe_no_button - 不为many2one字段显示导航按钮
oe_avatar - 当该字段为图片时,将它展现为头像(90*90的正方形)
- groups - 只将该字段展现给指定用户组
- on_change - 在字段值改变时调用对应方法,从8.0开始改用模型中的 odoo.api.onchange()
- attrs - 基于记录值的动态参数
- domain - 当以选择的方式显示关联字段时,用过过滤数据
- context - 用于关联字段,显示数据时提供上下文环境
- readonly - 该字段可在读和编辑模式下展现,可是永远是不能编辑的
- required - 当该值没有设置就保存时给出一个错误提示并阻止保存
- nolabel - 不显示字段的标签,只有在该字段是group子元素时用意义
- placeholder - 字段值为空时展现的提示
- mode - 对于one2many字段,用于展现其关联的记录的形式,有tree, form, kanban , graph,默认是tree
- help - 当将鼠标放在字段或标签时显示的提示
- filename - 对于二进制的字段,相关字段给出文件名
- 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