odoo Actions学习总结
环境
odoo-14.0.post20221212.tar
Actions(动作)
action定义系统响应用户操作的行为:登录、操作按钮、选择发票等…
action可以存储在数据库中,也可以作为字典直接返回,例如按钮方法。所有Action都有两个强制属性:
type
当前Action的类别,决定可以使用哪些字段以及如何解释action
name
action的名称,在客户端的界面中显示对action的简短用户可读描述
Bindings(绑定)
除了两个强制属性外,所有action有用于在任意模型的上下文菜单中显示动作的可选属性:
binding_model_id
指定action绑定的模型,格式:
moduleName.modelName
。注解对于“Server Actions”,请使用model_id
binding_type
指定绑定的类型,主要是放置action的上下文菜单
action
(默认)设置Action将出现在绑定模型的
Action
上下文菜单。report
设置Action将出现在绑定模型的
Print
上下文菜单。
binding_view_types
以逗号分隔的视图类型列表,即Action需要显示的上下文菜单所在的视图,主要是“列表”和“表单”。默认为
list,form
(列表和表单)
Window Actions (ir.actions.act_window
)
最常见的动作类型,用于通过视图呈现模型的可视化:Window Action为模型定义了一组视图类型(以及可能的特定视图)(以及可能特定的模型记录)。
包含字段:
res_model
action触发的要显示的视图关联的模型
views
(view_id,view_type)
对的列表。每对视图的第二个元素是视图的类别(tree
,form
,graph
, ……),第一个元素是可选的数据库id(或False
)。如果未提供id,则客户端应获取所请求模型的指定类型的默认视图(这由fields_view_get()
自动完成)。列表的第一种类型是默认视图类型,在执行操作时默认打开。每个视图类型在列表中最多应出现一次。当action配置如下时,打开的依旧是tree
视图,也就说view_mode
似乎是如下文所述,type
为ir.actions.act_window
的情况下,被忽略了,不起作用{
'type': 'ir.actions.act_window',
'views': [[False, "tree"], [False, "form"]],
'view_mode': 'form',
#...
}
res_id
(可选)如果默认视图为
form
,指定需要加载的记录(否则创建一个条新记录)search_view_id
(可选)(id, name)
对,id
为动作需要加载的指定搜索视图的数据库ID。默认获取模型的默认搜索视图。target
(可选)视图是否应在主内容区域(
current
)、以全屏模式(fullscreen
)或对话框/弹出窗口(new
)中打开。使用main
而不是current
以清除导航面包屑(实际发现,使用current
会导致面导航面包屑不断重复,形如 顾客信息/导入记录/顾客信息/导入数据/...)。默认为new
。context
(可选)传递给视图的附加上下文
domain
(可选)隐式添加到所有视图搜索查询的过滤domain
limit
(可选)默认情况下要在列表中显示的记录数。在web客户端中默认为80
name
(可选),action名称,界面显示时拼接到当前面包屑导航(现有导航面包屑 /name
值)。默认值为“Unnamed”,注意:如果name
值为空字符串,则默认为Unnamed
例如,要使用列表和表单视图打开客户(设置了customer
标志的partner
):
{
"type": "ir.actions.act_window",
"res_model": "res.partner",
"views": [[False, "tree"], [False, "form"]],
"domain": [["customer", "=", true]],
}
或者在新对话框中打开特定产品的表单视图(单独获取):
{
"type": "ir.actions.act_window",
"res_model": "product.product",
"views": [[False, "form"]],
"res_id": a_product_id,
"target": "new",
}
另一个例子,在当前页面中打开estate.customer
模块的默认列表视图
{
'type': 'ir.actions.act_window',
'name': _('导入数据'),
'res_model': 'estate.customer',
'views': [[False, "tree"]],
'view_mode': 'tree',
'context': self._context,
'target': 'main'
}
参考连接:
在数据库window action中,操作有几个不同的字段,这些字段应被客户端忽略,主要用于组成view
列表
view_mode
(默认=tree,form
)以逗号分隔的视图类型列表,格式为字符串(注意不要包含空格)。所有这些类型都必须在生成的
views
列表中(至少有一个False
view_id
)view_ids
M2M(技术上不是M2M:添加了一个
sequence
字段,可以只由一个视图类型组成,没有视图id) to view objects,定义views
的初始内容。注解:Act_window视图也可以通过
ir.actions.Act_window.view
干净地定义。如果您计划为模型允许多个视图,优先使用ir.actions.cact_window.wiew
而不是view_ids
action。<record model="ir.actions.act_window.view" id="test_action_tree">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_test_tree"/>
<field name="act_window_id" ref="test_action"/>
</record>
view_id
添加到
views
列表中的特定视图,以防其类型是view_mode
列表的一部分,并且尚未由view_ids
中的某个视图填充
这些主要用于从数据文件定义action:
<record model="ir.actions.act_window" id="test_action">
<field name="name">A Test Action</field>
<field name="res_model">some.model</field>
<field name="view_mode">graph</field>
<field name="view_id" ref="my_specific_view"/>
</record>
将使用“my_specific_view”视图,即使这不是模型的默认视图。
views
序列的服务器端组成如下:
- 从
view_ids
获取每个(id, type)
(按sequence
排序) - 如果定义了
view_id
,并且其类型尚未被填充,则追加其(id,type)
- 对于
view_mode
中的每个未填充类型,追加(False,type)
应用实践举例
在estate
模块的estate.property
模型的表单视图中,为Action
添加菜单"选取offers",如下:
![image-20230117111309634](images/odoo Actions学习总结/image-20230117111309634.png)
action配置:
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<record id="action_demo_wizard" model="ir.actions.act_window">
<field name="name">选取offers</field>
<field name="res_model">demo.wizard</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="binding_model_id" ref="estate.model_estate_property"/>
<field name="binding_view_types">form</field>
</record>
</data>
</odoo>
参考连接
https://www.odoo.com/documentation/14.0/zh_CN/developer/reference/addons/actions.html
odoo Actions学习总结的更多相关文章
- odoo开发学习「目录」
目录: 一.odoo介绍(发源 版本 ERP对比 优势劣势 应用场景 发展情况 社区介绍) 二.odoo设计思想 三.odoo自带模块 四.odoo开发前准备(python基础) 五.odoo环境搭建 ...
- odoo研究学习:刷新本地模块列表都干了什么事?
模块信息存储在ir.module.module 数据表中 平时在开发过程中经常会刷新本地模块列表,例如:新增了模块.更新了模块基础信息.更换了模块图标等等,在点击‘更新’按钮的时候odoo平台到底干了 ...
- Github Actions 学习笔记
Github Actions是什么? Github Actions 官方介绍:GitHub Actions是一个持续集成和持续交付(CI/CD)平台,允许您自动化构建.测试和部署管道.您可以创建构建和 ...
- 免费下载获取Odoo中文开发 指南 手册
引言 Odoo是一个强大的商业应用开源平台.在此基础上,构建了一套紧密集成的应用程序,涵盖了从CRM到销售到股票和会计的所有业务领域.Odoo有一个动态和不断增长的社区,不断增加功能.连接器和其他商业 ...
- odoo:开源 ERP/CRM 入门与实践
看了这张图,或许你对odoo有了一些兴趣. 这次就是和大家一起交流开源ERP/CRM系统:odoo 对以下读者有帮助:研发.产品.项目.市场.服务.运营.管理等. 一.背景趋势 社交网络.电商O2O: ...
- odoo:开源 ERP/CRM 入门与实践 -- 上海嘉冰信息技术公司提供咨询服务
odoo:开源 ERP/CRM 入门与实践 看了这张图,或许你对odoo有了一些兴趣. 这次Chat就是和大家一起交流开源ERP/CRM系统:odoo 对以下读者有帮助:研发.产品.项目.市场.服务. ...
- oddo
看了这张图,或许你对odoo有了一些兴趣. https://www.cnblogs.com/wterp/p/9093616.html 这次就是和大家一起交流开源ERP/CRM系统:odoo 对以下读者 ...
- Caliburn.Micro学习笔记(二)----Actions
Caliburn.Micro学习笔记目录 上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions, ...
- odoo学习
odoo视图对应模型:model="ir.ui.view"> <record id="mrp_workcenter_view_light_inherit&qu ...
- odoo通过actions.client进行自定义页面
一.使用原因 由于odoo自带页面在项目开发过程中无法满足使用,需要使用到动作ir.actions.client进行自定义视图的开发,实现自定义的xml视图开发. 二.实现目标 三.开发过程 1.项目 ...
随机推荐
- Java自增
Java自增 本文分为以下部分: 栗子 栗子解释 来点复杂的 字节码解读 总结 栗子 java存在一种神奇的操作符,++,自增1,但是经常分不清楚 i++ 和++i 两者的区别,虽然最后结果可能都是 ...
- FlexBox 行间距
问题背景 在Flex布局方式下, 父容器约定是换行的方式, 不足以容纳一行子元素的时候, 会单独进行折行, 那么折行的行间距如何处理呢? 解决办法 通过在子Item上面设置margin-top可以模拟 ...
- @synchronized(self) 加锁引起的Crash
一.最近米家App进入前台的时候上报上来一个Crash {"app_name":"MiHome","timestamp":"201 ...
- 2023 Hive 面试宝典
先说一些废话 总结一下Hive面试宝典,方便读者快速过一遍Hive面试所需要的知识点 Hive的介绍 Hive和Hadoop的关系 Hive利用hdfs存储数据,利用MapReduce查询数据 Hiv ...
- 简单实现Viper配置管理
本文由 ChatMoney团队出品 简介 前面实现的一个简易suno-api.是使用cookie来获取suno-token发起请求的.当时并没有通过配置的方式来获取cookie,而是直接在代码中写死了 ...
- Vulkan的VkImage和OpenGL的Texture2D互转的3种方法
Vulkan的纹理和OpenGL的纹理之间共享的解决方案, 因为项目的功能需要同时引入OpenGL和Vulkan,又因为效率的影响必须想办法优化,两者之间需要互相访问互相转换的高效方案. Vulkan ...
- JAVA IDEA Maven 加速镜像 阿里云
JAVA IDEA Maven 加速镜像 阿里云 如果是IDEA自带的则在: C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 20 ...
- 网络诊断工具traceroute的使用
在 Linux 系统中,traceroute 是一个网络诊断工具,用于确定数据包从你的计算机到目标主机(如一个网站或远程服务器)所经过的路由路径. 如果你的系统中没有安装 traceroute,你可以 ...
- 实验四:WinRAR漏洞
[实验目的] 通过打开rar文件,获取到目标机shell. [知识点] winrar漏洞 [实验原理] 该漏洞是由于WinRAR所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,该动态链接库 ...
- 数据标注工具 doccano
目录 安装 运行 doccano 使用 doccanno 上传数据 定义标签 添加成员 开始标注 导出数据 查看数据 统计 数据标注工具 Label-Studio 安装 打开命令行(cmd.termi ...