目录

1.什么是视图

2.视图的声明方式

3.tree视图

4.form视图

5.search视图

6.优先级


1.什么是视图

在Odoo中,视图(view)定义了模型记录的显示方式。 每种类型的视图代表一种可视化模式(如列表、表单、看板、日历等)。 一个模型可以定义多种类型的视图,同一类型的视图也可以定义多个,Odoo通过优先级或者指定视图ID的方式来进行选择匹配。Odoo中的视图也可以利用继承的方式来对原有的视图进行二次开发修改。

视图用来向用户展示模型中的数据,依赖于模型而存在,决定了相关页面数据的展现方式,常见的的视图包括:tree、form、search、kanban、graph,企业版支持更多的视图形式,如:gantt、 dashboard等

2.视图的声明方式

Odoo中的视图定义是通过XML格式来定义,在安装模块时,这部分定义的XML会定入模型ir.ui.view中,一个视图定义是该模型的一笔数据记录,通用的格式为

<odoo><record model="ir.ui.view" id="view_id"><field name="name">视图名称</field><field name="model">视图绑定的模型</field><!-- eval代表模型的优先级,如果有相同类型的视图,会使用优先级高的 --><field name="priority" eval="16"></field><!-- arch 的类型必须指定为xml,内部嵌套具体的视图 --><field name="arch" type="xml"><!-- view content: <form>, <tree>, <graph>, ... --></field></record>
</odoo>
# ir.ui.view 代表数据库中表对应的视图的模型
  • 和action的声明方式比较类似,固定的,使用record标签包裹起来,

  • 视图的声明的model是ir.ui.view

  • 这里定义的时候注意view_id不要包括符号点(.),否则Odoo会将点号前面的部分当成是模块名称

  • 视图需要绑定模型,如上图的第二个field,绑定的模型类如:meet.meet_room
    即:应用名称.模型类名称

  • name="priority", 如果存在多个视图,可以设定优先级,看具体哪个视图起作用

  • name="arch", 在这里面就可以写具体的视图了,tree视图、form视图等等,所有不同视图的定义XML内容放在arch字段里面。

3.tree视图

树视图(也称为列表视图)以表格形式显示记录。根元素是<tree>。 最简单的树形视图只列出要显示的所有字段(每个字段作为列)

<record model="ir.ui.view" id="testroom_list_view"><field name="name">TestRoomList</field><field name="model">test.test_room</field><field name="arch" type="xml"><tree><field name="name" string="科目名称"/><field name="seat_num"/></tree></field>
</record>
  • tree标签下,就可以使用模型类里面的字段了,设置几个field,应用就显示几个
  • name="模型类的字段名称"
  • string代表可以修改他们显示的名称,即列名,实际上是优先级高于模型类的字段名

例如,如下的tree中加入了两个模型类的字段就会显示出来

4.form视图

      表单用于创建和编辑单个记录。根元素是<form>。 它们由高级结构元素(group、notebook)和交互元素(button、fields)组成:

<record model="ir.ui.view" id="testroom_form_view"><field name="name">testroom.form</field><field name="model">test.test_room</field><field name="priority" eval="10"></field><field name="arch" type="xml"><form string="TestRoom Form"><group><field name="name" string="名称"/><field name="seat_num"/></group></form></field>
</record>
  • 也是在name="arch"的field的标签下,进行编写
  • 是一种向下排列的样式,也就是默认数模
  • group就是让字段名,也就是列名显示出来,string的用法同上

  • group默认是竖着排列,如果想要横向拍了列,所以可以这样写,col="2",是两列的意思

    <record model="ir.ui.view" id="testroom_form_view"><field name="name">testroom.form</field><field name="model">test.test_room</field><field name="priority" eval="10"></field><field name="arch" type="xml"><form string="TestRoom Form"><group col="2"><group><field name="name" string="名称"/></group><group><field name="seat_num"/></group></group></form></field>
    </record>

    注意是,最外层也是group,里层也是group

  • 可以加 header标签,显示的内容能高点,一般写button等元素
<record model="ir.ui.view" id="testroom_form_view"><field name="name">testroom.form</field><field name="model">test.test_room</field><field name="arch" type="xml"><form string="TestRoom Form"><header><!-- 此处可以放一些自定义的button元素 --><button string="按钮">按钮</button></header><sheet><!-- 对内容进行分组,可以在string中写分组名称,也可以写在其内的separator标签中 --><group string=""><separator string="考场管理"/><field name="name" string="科目"/><field name="seat_num"/></group><!-- 使用noteboook标签定义标签区域 --><notebook><!-- 使用page定义不同的标签页,string为标签的名称 --><page string="科目">这里是科目的描述,里面可以加其他的标签<group><field name="name" string="科目"/></group></page><page string="座位数量">这里是座位数量的描述,里面可以加其他的标签<group><field name="seat_num"/></group></page></notebook></sheet></form></field>
</record>

  • 里面会有header标签,里面一般是写一些button之类的元素
  • form的主体部分sheet,
  • group也可以自己定义string
  • separator是分组的一个标题,我们可以自己定义
  • notebook是标签栏,notebook里面需要定义page,一个page就是一个标签
  • 比较灵活,也可以把标签放到notebook里面
  • 如果不想让一个字段修改,但可以显示可以使用readonly='1'属性

5.search视图

搜索视图自定义与列表视图(以及其他聚合视图)关联的搜索字段。根元素是<search>,它们由定义可以搜索哪些字段的字段组成

search可以控制页面搜索框的搜索内容,当只有没有定义search时,默认搜索模型的name字段

<record model="ir.ui.view" id="testroom_search_view"><field name="name">testroom.search</field><field name="model">test.test_room</field><field name="arch" type="xml"><search><field name="name"/><field name="seat_num"/></search></field>
</record>
  • 在odoo中搜索是包含的搜索方式

  • 对数字是比较精确的,等于的方式

  • 如果你开发的模型没有定义搜索视图,则Odoo会自动生成仅允许在名称字段上搜索的视图。

然后看运行结果,搜索时候,就不仅仅能搜名称了 ,座位数也可以搜索了

6.优先级

<field name="priority" eval="10"></field>

  • 属性值的值越小,优先级越高
  • 如果有id为一样的视图,后面的视图会把前面的视图覆盖掉,所以有多个视图时候,要保证id的值要不同。

B站up主主页

单三er的个人空间_哔哩哔哩_Bilibili单三er,野生odoo爱好者;单三er的主页、动态、视频、专栏、频道、收藏、订阅等。哔哩哔哩Bilibili,你感兴趣的视频都在B站。https://space.bilibili.com/419877109

3.odoo的学习(odoo中的视图:tree视图、form视图、search视图)相关推荐

  1. odoo13学习 odoo的视图

    1. odoo的基本视图结构 基本视图通常共享下面定义的公共结构.占位符用全大写表示. <record id="MODEL_view_TYPE" model="ir ...

  2. 基于物化视图优化_CVPR2017|基于构造多视图子空间中的潜在表示解决聚类问题

    作者 | 张泽宇 编辑 | 臧晨宇 校对 | 李仲深 今天给大家介绍天津大学张长青老师等人在CVPR2017上发表的文章"Latent Multi-view Subspace Cluster ...

  3. mysql在视图中增加新数据_怎么向Mysql视图中增加新数据

    本篇文章主要给大家介绍mysql数据表中视图是怎么新增数据的. mysql视图的相关知识在我们之前的文章中,都已经给大家详细介绍过了,相信大家对视图肯定有了更深一步的了解. 从前面文章的介绍中,大家应 ...

  4. 认真学习MySQL中的MVCC机制

    什么是MVCC?MVCC(Multiversion Concurrency Control),多版本并发控制.顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制.这项技术使得在Inno ...

  5. 学习VC中所得的点点心

    我学习VC中所得的点点心得,有新的内容我会慢慢补上的 1  toolbar默认位图左上角那个点的颜色是透明色,不喜欢的话可以自己改. 2  VC++中 WM_QUERYENDSESSION WM_EN ...

  6. swift视图容器_如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图...

    swift视图容器 by Lee Dowthwaite 通过李道思韦特 如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图 (How to create a beautif ...

  7. 学习Spring中遇到关于BeanFactory及测试类的问题

    最近在学习Spring,使用的是Spring 5.0.1 学习书本中使用的是4.0 学习书本中使用以下来加载配置文件及设置 Resource resource = new ClassPathResou ...

  8. 【组队学习】【24期】集成学习(中)

    集成学习(中) 开源内容: https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearni ...

  9. 特征重要性、特征集成+FeatureUnion、特征选择变换器+ColumnTransformer、标签特征变换+TransformedTargetRegressor、特征质量、自动学习数据中的特征

    特征重要性.特征集成+FeatureUnion.特征选择变换器+ColumnTransformer.标签特征变换+TransformedTargetRegressor.特征质量.自动学习数据中的特征 ...

最新文章

  1. 那些20岁不信,30岁却深信不疑的道理!
  2. 基于Kotlin实现的GankIo客户端
  3. IC设计通过system c 建模和 rtl级的有什么区别
  4. nagios出现乱码
  5. Spring Boot与Web开发简介||SpringBoot对静态资源的映射规则
  6. 【Paper】2019_Consensus Control of Multiple AUVs Recovery System Under Switching Topologies and Time D
  7. 一个有趣的观察:关于内向和外向
  8. mysql 介绍 知乎_SQL介绍——Mysql
  9. 金山云html文件,金山云安全开放平台
  10. [转载] 使用Python在ArcGIS中编程杂谈
  11. Android ViewGroup
  12. GNS3+GNS3 VM
  13. 苹果6s强制删除id锁_苹果ID锁安全神话破灭!2分钟就能解锁
  14. 密码学系列之二:密码学基本概念
  15. 操作系统_第三章_处理器管理_多道程序设计
  16. 项目创新特色概述及主要内容
  17. android kitkat(4.4以上)各个版本的特性解析
  18. MATLAB坐标轴位置调整
  19. Java VisualVM使用
  20. STM32 HAL库之看门狗

热门文章

  1. wps电脑版_使用好这几个功能,让你手机里的wps变身神器。
  2. ceph-deploy mod add_GTA5 1.50NPC自杀 MOD [支持1.411.50版本] 覆盖版【5.19MB】
  3. Ⅱ:zookeeper的相关shell命令
  4. PaddleOCR——CUDA9.0环境中训练运行错误【Cudnn error, CUDNN_STATUS_BAD_PARAM】解决方案
  5. 汇编语言——正数数组P和负数数组N
  6. java的格式化时间工具类
  7. 多硬盘的引导文件boot.ini
  8. Vue.js-Day02-AM【Vue表单、核心指令(单选框、密码框、多行文本框、单选、多选、勾选、下拉列表)、组件汇总案例、ToDoList案例、计算属性(computed)、watch监听】
  9. Tp3.2在nginx下隐藏index.php文件
  10. 基于face++的人脸识别(上)