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;)是可选的。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLO+SlowFast+DeepSORT 简单实现视频行为识别

前段时间刷短视频看到过别人用摄像头自动化监控员工上班状态&#xff0c;比如标注员工是不是离开了工位&#xff0c;在位置上是不是摸鱼。虽然是段子&#xff0c;但是这个是可以用识别技术实现一下&#xff0c;于是我在网上找&#xff0c;知道发现了 SlowFast&#xff0c;那么下…

Sharding-JDBC快速使用【笔记】

1 引言 最近在使用Sharding-JDBC实现项目中数据分片、读写分离需求&#xff0c;参考官方文档&#xff08;Sharding官方文档&#xff09;感觉内容庞杂不够有条理&#xff0c;重复内容比较多&#xff1b;现结合项目应用整理笔记如下供大家参考和自己回忆使用&#xff1b; 在…

苹果手机数据删除怎么恢复?这几个方法值得一试!

不小心删除了iPhone里的照片&#xff1f;别担心&#xff0c;数据恢复是有可能的&#xff01; 从这里&#xff0c;你可以找到你的备份并恢复丢失的数据。如果你没有备份&#xff0c;那么数据恢复软件可能可以帮助你。它们可以扫描你的iPhone或iTunes备份&#xff0c;找到你删除…

打字练习(Python代码模拟打字练习软件效果)

Python代码模拟打字练习软件效果&#xff0c;循环进行单行打字练习&#xff0c;结束时输出平均速度和综合正确率。 (笔记模板由python脚本于2024年01月03日 22:36:34创建&#xff0c;本篇笔记适合熟悉Python字符串和列表基本数据类型的coder翻阅) 【学习的细节是欢悦的历程】 P…

如何利用Oracle官方网站不登录账号下载和安装非最新版本的JDK(版本自由选择)

一、JDK概述 JDK&#xff08;Java Development Kit&#xff09;是Java开发工具集&#xff0c;是针对Java编程语言的软件开发环境。它包含了Java编译器、JRE&#xff08;Java运行时环境&#xff09;以及其他一些用于开发、调试和测试Java应用程序的工具&#xff0c;是Java开发人…

通用Mapper怎么开接口扫描

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

三维模型数据的几何坐标变换的点云重建并行计算技术方法分析

三维模型数据的几何坐标变换的点云重建并行计算技术方法分析 倾斜摄影三维模型数据的几何坐标变换与点云重建并行计算技术的探讨主要涉及以下几个方面&#xff1a; 1、坐标系定义与转换&#xff1a;在进行坐标变换前&#xff0c;需要确定各个参考系的定义并实现坐标系之间的转…

[Angular] 笔记 15:模板驱动表单 - 表单验证

油管视频&#xff1a; Form Validation 有三种类型的验证&#xff1a; valid, pristine(是否被编辑过&#xff0c;被改过)&#xff0c;以及 touched 相反的属性&#xff1a; invalid, dirty, untouched pokemon-template-form.component.html 代码修改&#xff1a; 任何时候…

geemap学习笔记040:GEE中样本点选择操作流程

前言 geemap中目前有一个bug&#xff0c;就是在选择样本点的时候不合理&#xff0c;选完一类样本之后&#xff0c;没法继续选择下一类&#xff0c;并且没法在线进行编辑和修改。因此目前就只能结合在线版的GEE进行样本选择&#xff0c;本节就详细的介绍一下GEE中样本点的选择过…

Transformer 架构解释

一、说明 变形金刚是机器学习的一个新发展&#xff0c;最近引起了很大的轰动。他们非常善于跟踪上下文&#xff0c;这就是为什么他们写的文本有意义。在本章中&#xff0c;我们将介绍它们的体系结构以及它们的工作原理。 amanatulla1606 Transformer 模型是机器学习中最令人兴奋…

机器学习期末复习

机器学习 选择题名词解释&#xff1a;简答题计算题一、线性回归二、决策树三、贝叶斯 选择题 机器学习利用经验 &#xff0c;须对以下&#xff08;&#xff09;进行分析 A 天气 B 数据 C 生活 D 语言 归纳偏好值指机器学习算法在学习的过程中&#xff0c;对以下&#xff08;&a…

酷开系统小酷少儿重磅升级!陪伴孩子美好童年!

孩子的成长总是匆匆太匆匆&#xff0c;父母们应该放慢脚步&#xff0c;感悟童心。用心灵和智慧陪伴孩子&#xff0c;在孩子的心中没有什么比幸福的家庭更重要&#xff0c;没有什么比父母的陪伴更美好&#xff01;酷开系统少儿频道全面升级&#xff01;让酷开系统小酷少儿陪伴成…

设计模式篇章(1)——理论基础

设计模式&#xff1a;在软件开发中会面临许多不断重复发生的问题&#xff0c;这些问题可能是代码冗余、反复修改旧代码、重写以前的代码、在旧代码上不断堆新的代码&#xff08;俗称屎山&#xff09;等难以扩展、不好维护的问题。因此1990年有四位大佬&#xff08;GoF组合&…

ant design pro 5 企业级后台前端框架自定义根路径设置,解决public文件夹下资源在打包部署后出现找不到的问题

关于ant design pro v5的开箱使用方法见&#xff1a;开箱即用的企业级数据和业务管理中后台前端框架Ant Design Pro 5的开箱使用和偏好配置-CSDN博客 在开发过程中为了方便我们可能会将部分静态资源如logo等放入public文件夹&#xff0c;但在设置站点根路径后&#xff0c;publi…

5.云原生安全之ingress配置域名TLS证书

文章目录 cloudflare配置使用cloudflare托管域名获取cloudflare API Token在cloudflare中配置SSL/TLS kubesphere使用cert-manager申请cloudflare证书安装证书管理器创建Secret资源创建cluster-issuer.yaml创建cert.yaml申请证书已经查看申请状态 部署harbor并配置ingress使用证…

iec61850规约原理和工作原理

规约下载 https://products.iec.ch/view/search/all 规约整体介绍 ** IEC104和IEC61850的区别 ** modbus和IEC61850有什么区别 IEC61850简要介绍 变电站通信体系IEC61850将变电站通信体系分为3层站控层、间隔层、过程层。 IEC61850标准的服务实现主要分为三个部分&#xff…

运输层

title: 运输层 date: 2023-12-24 14:17:55 tags: 知识总结 categories: 计算机网络 运输层和网络层的联系和区别 物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题&#xff0c;实现了主机到主机的通信&#xff0c;但实际上&#xff0c;在计…

奋楫扬帆,奔赴新程 | 2023 年图扑大事记回顾,与您携手共迎 2024

2023.01 工信部公示了 2022 年度智能制造示范工厂揭榜单位和优秀场景名单。图扑软件和上海洲邦合作建设的宁波甬友数字孪生工厂被评为优秀场景&#xff0c;全国共有 369 个智能制造典型场景入选。 2023.01 在第十一届中国创新创业大赛全国赛&#xff08;新一代信息技术&#…

idea 弹框提示:Server‘s certificate is not trusted 解决办法

如图所示&#xff1a; 引起这个的根本原因:是因为你破解了idea&#xff0c;在本地hosts配置了映射&#xff0c;然后idea检测出来弹出警告 服务器证书不可用。所以在弹出这个框。 解决方法&#xff1a; 打开idea--->File-->Settings-->Tools-->点击Server Certifi…

anaconda navigator卡在loading user解决办法

01问题 打开anaconda navigator特别慢&#xff0c;卡在loading user 02查找原因 (1)关闭anaconda的所有进程 (2)打开anaconda prompt&#xff0c;输入anaconda-Navigator回车&#xff0c;即可通过报错查看原因。 QMimeDatabase: Error loading internal MIME data