转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189322.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 定义哪些视图可以被切换,默认情况下所有视图都可以

二:视图继承

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

  • 带有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

odoo10学习笔记十一:视图综述的更多相关文章

  1. python3.4学习笔记(十一) 列表、数组实例

    python3.4学习笔记(十一) 列表.数组实例 #python列表,数组类型要相同,python不需要指定数据类型,可以把各种类型打包进去#python列表可以包含整数,浮点数,字符串,对象#创建 ...

  2. Go语言学习笔记十一: 切片(slice)

    Go语言学习笔记十一: 切片(slice) 切片这个概念我是从python语言中学到的,当时感觉这个东西真的比较好用.不像java语言写起来就比较繁琐.不过我觉得未来java语法也会支持的. 定义切片 ...

  3. Django:学习笔记(9)——视图

    Django:学习笔记(9)——视图 基础视图 基于函数的视图,我们需要在使用条件语句来判断请求类型,并分支处理.但是在基于类的视图中,我们可以在类中定义不同请求类型的方法来处理相对应的请求. 基于函 ...

  4. Django:学习笔记(8)——视图

    Django:学习笔记(8)——视图

  5. SharpGL学习笔记(十一) 光源创建的综合例子:光源参数可调节的测试场景

    灯光的测试例子:光源参数可以调节的测试场景 先看一下测试场景和效果. 场景中可以切换视图, 以方便观察三维体和灯光的位置.环境光,漫射光,镜面反射光都可以在四种颜色间切换. 灯光位置和摄像机位置(Lo ...

  6. JavaScript权威设计--JavaScript函数(简要学习笔记十一)

    1.函数调用的四种方式 第三种:构造函数调用 如果构造函数调用在圆括号内包含一组实参列表,先计算这些实参表达式,然后传入函数内.这和函数调用和方法调用是一致的.但如果构造函数没有形参,JavaScri ...

  7. odoo10学习笔记五:高级视图

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189279.html 树视图 tree视图表现出来是列表视图,列表中一行一纪录.可以根据每行纪录的某字段值 ...

  8. Odoo10学习笔记三:模型(结构化的应用数据)、视图(用户界面设计)

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189263.html 一:模型 [Odoo中,一切皆模型,连视图都是模型.Odoo将各种数据,如:权限数据 ...

  9. Oracle 学习笔记 11 -- 视图 (VIEW)

    本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...

随机推荐

  1. Java JDK 运行环境安装

    1 Windows系统 1.1 安装包准备 安装包本文档讲解为64位系统,如果是32位系统需要下载32位系统安装包 1.1.1 下载方式 打开jdk官方下载地址,该文档提供jdk版本为1.8 http ...

  2. CodeForces 984C Finite or not?

    http://codeforces.com/problemset/problem/984/C Time limit    1000 msMemory limit    262144 kB 题目 You ...

  3. 新建全色或者resize(毫无价值,只是做记录)

    import glob import os,sys import shutil import numpy as np import cv2 import matplotlib.pyplot as pl ...

  4. imutils.path

    from imutils import paths # 要在哪条路径下查找 path = '...' # 查找图片,得到图片路径 imagePaths = list(imutils.paths.lis ...

  5. O2O 线下业务 和 线上业务,在特征工程上的差异

    人工智能在外卖送达时预估上的应用 这篇讲清楚了 O2O 线下业务 和 线上业务,在特征工程上的差异:

  6. MySQL学习笔记2——DML

    DML(数据操作语言,它是对表记录的操作(增,删,改)!) 1.插入数据 *INSERT INTO 表名(列名1,列名2,...) VALUES(列值1,列值2,...); >在表名后给出要插入 ...

  7. luoguP4770 [NOI2018]你的名字

    题意 不妨先考虑\(l=1,r=|S|\)的情况: 这时我们要求的其实是\(S,T\)的本质不同的公共子串数量. 首先对\(S\)建一个后缀自动机,同时对于每个\(T\),我们也建一个自动机. 根据后 ...

  8. INVERSION包

    1.安装该包 if (!requireNamespace("BiocManager", quietly = TRUE))install.packages("BiocMan ...

  9. java - mybatis:java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for

    当遇见java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for 错误的时候 ...

  10. SSM配置动态数据源

    多数据源配置主要涉及自定义类(DataSource注解类.DataSourceAspect切面类,动态数据源接口实现类.以及数据源字符串线程保存类),pom.xml文件.applicationCont ...