odoo17开发教程(6):用户界面UI的交互-创建Action

前面的文章中我们已经创建了新模型及其相应的访问权限,是时候与用户界面进行交互了。


数据文件(XML)

在上一篇文章中,我们通过 CSV 文件添加数据。当要加载的数据格式简单时,CSV 格式很方便。当格式比较复杂时(如加载视图结构或电子邮件模板),我们使用 XML 格式。

XML 文件必须添加到与 CSV 文件相同的文件夹中,并在 __manifest__.py 中进行类似定义。在安装或更新模块时,数据文件的内容也是按顺序加载的,因此针对 CSV 文件的所有说明也适用于 XML 文件。当数据链接到视图时,我们会将它们添加到视图文件夹中。


所以我们现在整个模块的结构是这样的:

在本章中,我们将通过 XML 文件加载第一个动作(action)。动作是数据库中的标准记录(record)。

在 Odoo 中,用户界面(动作、菜单和视图)主要是通过创建和组合 XML 文件中定义的记录来定义的。常见的模式是菜单 > 动作 > 视图。要访问记录,用户需要浏览多个菜单层级;最深的层级是触发打开记录列表的动作。

动作(action)

动作可以通过三种方式触发操作:

  1. 点击菜单项(链接到特定操作)
  2. 点击视图中的按钮(如果这些按钮与动作相关联)
  3. 作为对象上的上下文动作

本章只介绍第一种情况。第二种情况将在以后的章节中介绍,而最后一种情况则是高级主题的重点。在 "房地产 "示例中,我们希望将菜单链接到 estate.property 模型,这样我们就能创建一条新记录。该操作可视为菜单和模型之间的链接。

我们的 test_model 的一个最基本的动作如下:

<record id="test_model_action" model="ir.actions.act_window">
    <field name="name">Test action</field>
    <field name="res_model">test_model</field>
    <field name="view_mode">tree,form</field>
</record>
  • id 是外部标识符。它可以用来引用记录(而不需要知道其在数据库中的标识符)。
  • model 的固定值是 ir.actions.act_window(窗口操作 (ir.actions.act_window))。
  • name 是操作的名称。
  • res_model 是动作适用的模型。
  • view_mode 是可用的视图;在本例中是列表(树形)和表单视图。我们稍后会看到还有其他视图模式。

以下是odoo源码中的实际例子。请注意 XML 数据文件的结构,因为在下面的实践中会用到它。

<record id="crm_lost_reason_action" model="ir.actions.act_window">
        <field name="name">Lost Reasons</field>
        <field name="res_model">crm.lost.reason</field>
        <field name="view_mode">tree,form</field>
        <field name="help" type="html">
          <p class="o_view_nocontent_smiling_face">
            Define a new lost reason
          </p><p>
            Use lost reasons to explain why an opportunity is lost.
          </p><p>
            Some examples of lost reasons: "We don't have people/skill", "Price too high"
          </p>
        </field>
    </record>

实践

为我们的esteta模块创建以下文件views/estate_property_views.xml

<?xml version="1.0"?>
<odoo>
    <record id="estate_property_action" model="ir.actions.act_window">
        <field name="name">estate action</field>
        <field name="res_model">estate_property</field>
        <field name="view_mode">tree, form</field>
    </record>
</odoo>

并在manifest文件中定义它:

{
    'name': 'Real Estate',
    'version': '1.0',
    'description': 'Real Estate',
    'author': 'codejourney',
    'data': [
        'security/ir.model.access.csv',
        'views/estate_property_views.xml',
    ]
}

重启你的容器,你应该能在logs里面看见以下内容:

INFO odoo odoo.modules.loading: loading estate/views/estate_property_views.xml 

很棒,学到这里了,继续加油!


"To know that we know what we know, and to know that we do not know what we do not know, that is true knowledge." - Nicolaus Copernicus

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

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

相关文章

【前端Vue】Vue3+Pinia小兔鲜电商项目第1篇:认识Vue3,1. Vue3组合式API体验【附代码文档】

全套笔记资料代码移步&#xff1a; 前往gitee仓库查看 感兴趣的小伙伴可以自取哦&#xff0c;欢迎大家点赞转发~ 全套教程部分目录&#xff1a; 部分文件图片&#xff1a; 认识Vue3 1. Vue3组合式API体验 通过 Counter 案例 体验Vue3新引入的组合式API vue <script> ex…

【MySQL】DQL

文章目录 一、基本语法二、基本查询&#xff08;不带任何条件&#xff09;2.1 查询多个字段2.2 字段设置别名 AS2.3 去除重复记录 DISTINCT2.4 案例 三、条件查询&#xff08;WHERE&#xff09;3.1 语法3.2 条件3.3 案例 四、聚合函数&#xff08;count、max、min、avg、sum&am…

Linux——开发工具yum与vim

Linux——开发工具yum与vim 文章目录 Linux——开发工具yum与vim一、Linux 软件包管理器-yum1.1 什么是软件包1.2 yum的使用 二、linux下的编辑器-vim2.1 vim的基本概念2.2 vim的基本操作插入模式下的基本命令底行模式下的基本指令 2.3 vim的配置 一、Linux 软件包管理器-yum …

[数据集][目标检测]铝片表面工业缺陷检测数据集VOC+YOLO格式400张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;400 标注数量(xml文件个数)&#xff1a;400 标注数量(txt文件个数)&#xff1a;400 标注类别…

SqlServer2008(R2)(二)SqlServer2008(R2)安装和卸载注意事项整理

二、注意事项 1、 安装数据中心版 说明&#xff1a;此激活版仅用于测试和学习使用。 这是官方的下载页面&#xff08;需要付费订阅&#xff09;&#xff1a; http://msdn.microsoft.com/zh-cn/subscriptions/downloads/default.aspx 数据中心版&#xff1a; PTTFM-X467G-P7RH…

MyBatis基础使用

MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;Plain Old Java Objects&am…

【打工日常】使用Docker部署zyplayer_doc团队协作文档

一、zyplayer-doc介绍 1.zyplayer-doc是一款适合企业和个人使用的WIKI知识库管理工具&#xff0c;提供在线化的知识库管理功能&#xff0c;专为私有化部署而设计&#xff0c;最大程度上保证企业或个人的数据安全&#xff0c;公司小团队的话完全可以局域网部署一个。 2.它也可以…

PyQt6实战2

cron表达式解析器和生成器 基本功能&#xff1a; 1.输入cron表达式&#xff0c;显示接下来的几条即将执行的时间 (测试下来只有5位是生效的) 2.选择规则生成cron 运行CronRunner即可&#xff1a; 运行效果展示 from PyQt6.QtWidgets import * import sys from cron import C…

RuoYi-Vue开源项目2-前端登录验证码生成过程分析

前端登录验证码实现过程 生成过程分析 生成过程分析 验证码的生成过程简单概括为&#xff1a;前端登录页面加载时&#xff0c;向后端发送一个请求&#xff0c;返回验证码图片给前端页面展示 前端页面加载触发代码&#xff1a; import { getCodeImg } from "/api/login&q…

在pharmit里匹配药效团

我把400个无活性的小分子&#xff08;decoys&#xff09;提交到pharmit里。 命名为decoyset00~decoyset08&#xff0c;查找时&#xff0c;按这个找。 1、导入药效团配体&#xff1a; 进入药效团筛选界面&#xff1a; 导入代表药效团模型的活性肽构象&#xff1a; 2、选择预先…

Unity判断某个材质是否拥有某张贴图

在Unity中&#xff0c;一个材质是唯一的&#xff0c;也就是实例&#xff0c;当我们打开Debug面板时&#xff0c;就可以看清楚材质的具体信息。 其中SvaedProperties就是材质保存的属性&#xff0c;当然贴图也是属性&#xff0c;也就是TexEnvs下的属性 当然&#xff0c;要判断某…

Docker进阶教程 - 2 Docker部署SpringBoot项目

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 2 Docker部署SpringBoot项目 已经学习了 Dockerfile 了&#xff0c;下面介绍一下如何将 SpringBoot 项目通过 Dockerfile 来部署到 Docker 中。 1 修改项目配置 首先需要准备一个 SpringBo…

【Spring 篇】SpringMVC的请求:舞台上的开端

在Web开发的舞台上&#xff0c;请求就如同一场充满激情的开端&#xff0c;而SpringMVC是这场表演的舞台主持人&#xff0c;它能够优雅地接收和处理各种请求&#xff0c;引领我们进入一个美妙的编码之旅。在本篇博客中&#xff0c;我们将深入探讨SpringMVC的请求处理机制&#x…

oracle 19c打补丁到19.14

oracle 19c打补丁到19.14 oracle 19.3打补丁到19.14 查看oracle的版本&#xff1a; SQL> column product format A30 SQL> column version format A15 SQL> column version_full format A20 SQL> column status format A15 SQL> select * from product_compo…

鸿蒙开发之MPChart图表开发

一、简介 随着移动应用的不断发展,数据可视化成为提高用户体验和数据交流的重要手段之一,因此需要经常使用图表,如折线图、柱形图等。OpenHarmony提供了一个强大而灵活的图表库是实现这一目标的关键。 在 ohpm 中心仓(https://ohpm.openharmony.cn/)中,汇聚了众多开发者…

3月报价:腾讯云服务器2024年优惠价格表,5元1个月

腾讯云服务器今日价格&#xff1a;轻量应用服务器2核2G3M价格61元一年、2核2G4M价格99元一年&#xff0c;540元三年、2核4G5M带宽165元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器646元15个月&#xff1b;云服务器CVM S5实例2核2G配置280.8元一年、2核4G、4核8G…

常用芯片学习——DS3231M芯片

DS3231M RTC实时时钟 芯片介绍 DS3231M是一款低成本、极其精确的 I2C 实时时钟 &#xff08;RTC&#xff09;。该设备集成了电池输入&#xff0c;并在设备主电源中断时保持准确的计时。微型电子机械系统 &#xff08;MEMS&#xff09; 谐振器的集成提高了器件的长期精度&…

CesiumJS 沙盒

CesiumJS 沙盒 通过CesiumJS 沙盒快速测试CesiumJS的一些功能&#xff0c;免去安装开发环境的困恼。 Hello World https://sandcastle.cesium.com/index.html 简单修改&#xff08;F8运行&#xff09;&#xff1a;去掉界面上UI const viewer new Cesium.Viewer("cesi…

HBase在表操作--显示中文

启动HBase后&#xff0c;Master和RegionServer两个服务器&#xff0c;分别对应进程为HMaster和HRegionServe。&#xff08;可通过jps查看&#xff09; 1.进入表操作 hbase shell 2.查看当前库中存在的表 list 3.查看表中数据&#xff08;注&#xff1a;学习期间可用&#…

ve-list 列表

ve-list 列表 功能描述 最基础的列表展示&#xff0c;可承载文字、列表、图片、段落&#xff0c;常用于后台数据展示页面。 Api 效果图 <ve-list v-for"(item, index) in _list" :key"index" :data"item" type"list3"><t…