odoo17 | 基本视图

前言

我们在上一章中已经看到Odoo能够为给定模型生成默认视图。在实践中,默认视图是绝对不可接受的用于商业应用程序。相反,我们至少应该以逻辑方式组织各种字段。

视图在带有动作菜单的XML文件中定义。它们是ir.ui.view模型的实例。

在我们的房地产模块中,我们需要以合乎逻辑的方式组织字段:

  • 在tree 列表(树)视图中,我们希望显示的不仅仅是名称。

  • 在form表单视图中,应对字段进行分组。

  • 在search 搜索视图中,我们必须能够搜索的不仅仅是名称。具体来说,我们想要一个 过滤“可用”属性和按邮政编码分组的快捷方式。

列表视图

列表视图应如下所示:
在这里插入图片描述
列表视图(也称为树视图)以表格形式显示记录。
它们的根元素是 。此视图的最基本版本简单 列出要在表中显示的所有字段(其中每个字段都是一列):

<tree string="Tests"><field name="name"/><field name="last_seen"/>
</tree>
  • string=“Tests” 可省略
    示例完整代码:
 <record id="crm_lost_reason_view_tree" model="ir.ui.view"><field name="name">crm.lost.reason.tree</field><field name="model">crm.lost.reason</field><field name="arch" type="xml"><tree string="Channel" editable="bottom"><field name="name"/></tree></field></record>

表单视图

窗体视图应如下所示:
在这里插入图片描述

  • 表单用于创建和编辑单个记录。
    它们的根元素是。它们由高级结构元素(group 和notebook)和交互元素(button 和field)组成:
<form string="Test"><sheet><group><group><field name="name"/></group><group><field name="last_seen"/></group><notebook><page string="Description"><field name="description"/></page></notebook></group></sheet>
</form>
  • 可以使用常规的HTML标记(如div和h1)以及class属性(Odoo提供了一些内置类)来微调外观。

下面是一个简单的例子

 <record id="crm_lost_reason_view_form" model="ir.ui.view"><field name="name">crm.lost.reason.form</field><field name="model">crm.lost.reason</field><field name="arch" type="xml"><form string="Lost Reason"><sheet><div class="oe_button_box" name="button_box"><button name="action_lost_leads" type="object"class="oe_stat_button" icon="fa-star"><div class="o_stat_info"><field name="leads_count" class="o_stat_value"/><span class="o_stat_text"> Leads</span></div></button></div><widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/><div class="oe_title"><div class="oe_edit_only"><label for="name"/></div><h1 class="mb32"><field name="name" class="mb16"/></h1><field name="active" invisible="1"/></div></sheet></form></field></record>

搜索视图

搜索视图应如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
搜索视图与列表和表单视图略有不同,因为它们不显示内容。尽管它们适用于特定的模型,但它们用于过滤其他视图的内容(通常是聚合视图,如List)。除了用例的不同之外,它们的定义方式是相同的。

它们的根元素是。这个视图的最基本版本只是列出了需要快捷方式的所有字段:

<search string="Tests"><field name="name"/><field name="last_seen"/>
</search>

Odoo生成的默认搜索视图提供了按名称进行过滤的快捷方式。在自定义搜索视图中添加用户可能要过滤的字段是很常见的。
搜索视图还可以包含元素,它充当预定义搜索的开关。过滤器必须具有以下属性之一:

  • domain:将给定域添加到当前搜索中
  • context:为当前搜索添加一些上下文;使用键group_by对给定字段名的结果进行分组

一个简单的例子:

 <record id="view_delivery_carrier_search" model="ir.ui.view"><field name="name">delivery.carrier.search</field><field name="model">delivery.carrier</field><field name="arch" type="xml"><search string="Delivery Carrier"><field name="name" string="Carrier" /><field name="delivery_type"/><separator/><filter string="Archived" name="inactive" domain="[('active', '=', False)]"/><group expand="1" string="Group By"><filter string="Provider" name="provider" context="{'group_by':'delivery_type', 'residual_visible':True}"/></group></search></field></record>

在Odoo中,域(domain)对记录的条件进行编码:域是用于选择模型记录子集的标准列表。每个条件都是一个三元组,包含一个字段名、一个操作符和一个值。如果指定的字段满足应用于该值的运算符的条件,则记录满足标准。

例如,当在Product模型上使用时,以下域选择单价大于1000的所有服务:

[(‘product_type’, ‘=’, ‘service’), (‘unit_price’, ‘>’, 1000)]

默认情况下,标准与隐式AND组合在一起,这意味着需要满足每个标准才能使记录匹配域。逻辑运算符& (AND)、| (OR)和!(NOT)可用于显式地组合标准。它们用于前缀位置(操作符插入其参数之前,而不是中间)。例如,要选择“服务或单价不在1000到2000之间”的产品:

['|',('product_type', '=', 'service'),'!', '&',('unit_price', '>=', 1000),('unit_price', '<', 2000)]

注意
XML不允许在XML元素中使用<和&。为了避免解析错误,应该使用实体转义引用: &lt;替换<和&amp;替换& 。其他实体转义引用(&gt;,&apos; 和 &quot;)是可选的。

到此为止,看起来不错?在这一点上,我们已经能够创建模型并设计具有商业意义的用户界面。然而,仍然缺少一个关键组成部分:模型之间的联系,这个我们下节文章再讲。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/595135.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony从入门到放弃(一)

OpenHarmony从入门到放弃&#xff08;二&#xff09; 一、OpenHarmony的基本概念和特性 OpenHarmony是由开放原子开源基金会孵化及运营的开源项目&#xff0c;其目标是构建一个面向全场景、全连接、全智能的时代的智能终端设备操作系统。 分布式架构 OpenHarmony采用分布式…

Termius for Mac/Win:一款功能强大的终端模拟器、SSH 和 SFTP 客户端软件

随着远程工作和云技术的普及&#xff0c;对于高效安全的远程访问和管理服务器变得至关重要。Termius&#xff0c;一款强大且易用的终端模拟器、SSH 和 SFTP 客户端软件&#xff0c;正是满足这一需求的理想选择。 Termius 提供了一站式的解决方案&#xff0c;允许用户通过单一平…

什么是Alibaba Cloud Linux?完全兼容CentOS,详细介绍

Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS的阿里云发行版&#xff0c;针对阿里云服务器ECS做了大量深度优化&#xff0c;Alibaba Cloud Linux由阿里云官方免费提供长期支持和维护LTS&#xff0c;Alibaba Cloud Linux完全兼容CentOS/RHEL生态和操作方式…

如何修复卡在恢复模式的Android 手机并恢复丢失的数据

Android 系统恢复是一项内置功能&#xff0c;如果您的 Android 设备无法正常工作或触摸屏出现问题&#xff0c;该功能会很有帮助。您可以启动进入恢复模式并使用它来恢复出厂设置您的 Android 设备&#xff0c;而无需访问设置。此外&#xff0c;它还经常用于重新启动系统、从 A…

使用生成式AI查询大型BI表

在拥有大量表格形式数据的组织中&#xff0c;数据分析师的工作是通过提取、转换和围绕数据构建故事来理解这些数据。 分析师访问数据的主要工具是 SQL。 鉴于大型语言模型 (LLM) 令人印象深刻的功能&#xff0c;我们很自然地想知道人工智能是否可以帮助我们将信息需求转化为格式…

复试 || 就业day03(2024.01.03)项目一

文章目录 前言scikit-learn实现简单线性回归scikit-learn实现多元线性回归&#xff08;二元&#xff09;总结 前言 &#x1f4ab;你好&#xff0c;我是辰chen&#xff0c;本文旨在准备考研复试或就业 &#x1f4ab;本文内容来自某机构网课&#xff0c;是我为复试准备的第一个项…

基于Vue开发的一个仿京东电商购物平台系统(附源码下载)

电商购物平台项目 项目完整源码下载 基于Vue开发的一个仿京东电商购物平台系统 Build Setup # csdn下载该项目源码压缩包 解压重命名为sangpinghui_project# 进入项目目录 cd sangpinghui_project# 安装依赖 npm install# 建议不要直接使用 cnpm 安装以来&#xff0c;会有各…

知识图谱 vs GPT

简介&#xff1a; 当我们谈论知识图谱时&#xff0c;我们指的是一种结构化的知识表示形式&#xff0c;是一种描述真实世界中事物及其关系的语义模型&#xff0c;用于描述实体之间的关系。它通过将知识组织成图形结构&#xff0c;提供了一种更全面、准确和智能的信息处理方式。知…

每日一题(LeetCode)----二叉树--二叉树的层平均值

每日一题(LeetCode)----二叉树–二叉树的层平均值 1.题目&#xff08;637. 二叉树的层平均值&#xff09; 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1&#xff1a; 输入&#xff1a;root […

微信小程序开发会务管理系统解决方案

随着移动通讯业务以及信息技术的快速发展&#xff0c;移动端的应用 (APP)的功能越来越多样越来越受欢迎。微信、支付宝以及各大手机品牌开始着手于“小程序”“轻应用”的开发化&#xff0c;在信息技术较为发达、社交软件较为集中的当今社会中&#xff0c;使用微信小程序开发程…

【SpringBoot框架篇】34.使用Spring Retry完成任务的重试

文章目录 简要1.为什么需要重试&#xff1f;2.添加maven依赖3.使用Retryable注解实现重试4.基于RetryTemplate模板实现重试 简要 Spring实现了一套重试机制&#xff0c;功能简单实用。Spring Retry是从Spring Batch独立出来的一个功能&#xff0c;已经广泛应用于Spring Batch,…

python封装接口自动化测试套件 !

在Python中&#xff0c;我们可以使用requests库来实现接口自动化测试&#xff0c;并使用unittest或pytest等测试框架来组织和运行测试套件。以下是一个基本的接口自动化测试套件封装示例&#xff1a; 首先&#xff0c;我们需要安装所需的库&#xff1a; pip install requests …

pytest conftest通过fixture实现变量共享

conftest.py scope"module" 只对当前执行的python文件 作用 pytest.fixture(scope"module") def global_variable():my_dict {}yield my_dict test_case7.py import pytestlist1 []def test_case001(global_variable):data1 123global_variable.u…

qt 异常汇总

1. C2338 No Q_OBJECT in the class with the signal (编译源文件 ..\..\qt\labelme-master\src\mainwindow.cpp mainwindow头文件中的类没有Q_OBJECT宏定义&#xff0c;或者其子类或者其他依赖没有Q_OBJECT宏定义。 全部qt类都要写上Q_OBJECT. 2. C2385 对connect的访…

【c++】vector的特性及使用

目录 一、vector的介绍及使用 1、vector迭代器的使用 2、vector的空间增长 3、vector的迭代器失效问题 二、vector的深度剖析与模拟实现 一、vector的介绍及使用 1、vector迭代器的使用 vector的迭代器就是原生态指针。vector的迭代器使用方法与string的迭代器使用方法相…

【CANopen】关于STM32中CanFestival的pdo应用

系列文章目录 文章目录 系列文章目录一、发送1、同步传输2、异步传输 二、接收 使用STM32F407单片机 pdo属于过程数据用来传输实时数据&#xff0c;即单向传输&#xff0c;无需接收节点回应。 一、发送 分为同步传输和异步传输。 1、同步传输 分为循环传输&#xff08;周期…

【12】ES6:模块化

一、JavaScript 模块化 JavaScript 模块化是一种组织和管理 JavaScript 代码的方法&#xff0c;它将代码分割为独立的模块&#xff0c;每个模块都有自己的作用域&#xff0c;并且可以导出和导入功能。模块化可以提高代码的可维护性、可重用性和可扩展性。 在JavaScript中&…

【vue/uniapp】使用 uni.chooseImage 和 uni.uploadFile 实现图片上传(包含样式,可以解决手机上无法上传的问题)

引入&#xff1a; 之前写过一篇关于 uview 1.x 版本上传照片 的文章&#xff0c;但是发现如果是在微信小程序的项目中嵌入 h5 的模块&#xff0c;这个 h5 的项目使用 u-upload 的话&#xff0c;图片上传功能在电脑上正常&#xff0c;但是在手机的小程序上测试就不会生效&#x…

漏洞复现--海康威视IP网络对讲广播系统远程命令执行

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

职场革命:六款AI助手改写工作效率的故事

引言 在数字化时代&#xff0c;AI助手正快速成为职场的革命者。这些智能助手不仅仅是效率的提升者&#xff0c;它们更是创新的驱动力&#xff0c;重新定义了我们的工作方式。从自动化PPT创建到智能邮件优化&#xff0c;它们的影响深远且多元。本文将深入探讨六款不同领域的AI助…