当前位置: 首页 > article >正文

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


http://www.kler.cn/a/272212.html

相关文章:

  • elementUI Table组件实现表头吸顶效果
  • 【C++】在线五子棋对战项目网页版
  • 以 RFID 为钥,开启民兵装备管理的科技之门
  • 项目中使用的是 FastJSON(com.alibaba:fastjson)JSON库
  • 一、vue智能Ai对话(高仿通义千问)普通版。
  • 微信小程序:实现单选,多选,通过变量控制单选/多选
  • ffmpeg 切割音频文件,各种格式(wav, flac, mp3, m4a等)
  • lua gc垃圾回收知识记录
  • 如何在MATLAB中处理图像和视频?
  • AJAX-XMLHttpRequest
  • Pytorch NLP入门3:用嵌入表示单词
  • 接口测试及接口测试工具【Postman】相关的面试题
  • 微信小程序Skyline模式自定义tab组件胶囊与原生胶囊平齐,安卓和ios均自适应
  • 类似web版Navicat mysql客户端==phpMyAdmin源码启动
  • 使用Python构建RESTful API的最佳实践【第137篇—RESTful API】
  • llama笔记:官方示例解析 example_chat_completion.py
  • Mysql数据库的多实例部署
  • (十七)【Jmeter】取样器(Sampler)之JSR223取样器
  • 基于STM32的智能衣柜系统设计
  • 访问者模式(Visitor Pattern)
  • Apache-Doris基础概念
  • 什么数据需要存在Redis里?缓存的缺点?怎样进行数据同步?
  • 基于Python的股票市场分析:趋势预测与策略制定
  • Qt文件以及文件夹相关类(QDir、QFile、QFileInfo)的使用
  • 安卓国产百度网盘与国外云盘软件onedrive对比
  • docker快速安装和详细安装-保姆教程