odoo开发教程十:Actions
actions定义了系统对于用户的操作的响应:登录、按钮、选择项目等。
一:窗口action(ir.actions.act_window )
最常用的action类型,用于将model的数据展示出来。



字段列表:
1.res_model -- 需要在view里显示数据的model
2.views -- 一个(view_id, view_type) 列表,view_type代表视图类型如:form,tree,gragh...,view_id是可选的数据库id或False,如果没有指定id,客户端会自动用fields_view_get()获取相应类型的默认视图,type参数列表的第一个会被默认用来展示
3.res_id (可选) -- 当默认的视图类型是form时,可用于指定加载的数据
4.search_view_id (可选) -- (id, name),id是储存在数据库的搜索视图,默认会读取model的默认搜索视图
5.target (可选) -- 定义视图是 在当前视图上打开(current)、使用全屏模式(fullscreen)、使用弹出框(new)、可使用main代替current来清除面包屑导航
6.context (可选) -- 额外的需要传给视图的环境数据
7.domain (可选) -- 自动添加到视图搜索中的查询
8.limit (可选) -- 在客户端显示的数据量,默认80
9.auto_search(可选) -- 搜索是否在加载默认视图后立即执行,默认True



- view_mode -- 以逗号分隔的视图类型列表,所有类型的视图会被展示出来
- view_ids -- 视图对象的一系列的字段,用于定义视图的默认内容
- view_id -- 将指定的view加入到视图中,以防不被view_ids所包含
上述参数一般在使用数据文件定义action的时候使用:
二:链接Action(ir.actions.act_url)
可以通过odoo的链接打开一个网站页面,可通过两个字段来自定义:
- url -- 当激活action时所打开的链接
- target -- new:在新窗口打开,self:替换当前页面内容,默认new
三:服务器Action (ir.actions.server)
可以通过action定位来触发复杂的服务端代码:
- id -- 服务端action在数据库存储的id
context (可选) -- 执行服务端action的上下文环境
储存在数据库中的action可以基于state执行一些特别的动作,部分字段在state之间是相互共享的model_id -- 与action相关联的model,在 evaluation contexts中可用
- condition (可选) -- 使用服务端的 evaluation contexts 来执行python代码,如果是False则阻止action执行,默认值是True
code -- 当调用action时执行的python代码
object_create -- 使用钩子创建一条新记录(通过create或copy方法)
use_create
1.new - 基于指定的 model_id创建一条记录
2.new_other - 基于指定的crud_model_id创建一条记录
3.copy_current - 复制action所引用的记录
4.copy_other - 复制一个通过ref_object获得的记录fields_lines --当创建或复制记录时需要修改的字段,One2many 会有以下字段:
1.col1 -- 在use_create里所包含的需要被重赋值的ir.model.fields
2.value -- 字段对应的值,基于type进行解析
3.type -- 取值value:就是value字段的值,取值equation:value字段会当成python来解析- crud_model_id -- 当use_create为new_other时,表示用于创建新记录的model id
- ref_object -- 当use_create为copy_other时用于指定创建记录时引用的记录
- link_new_record -- 是否用用link_field_id将新记录和当前记录进行many2one关联,默认False
- link_field_id -- 指定当前记录与新记录进行many2one关联的字段
object_write -- 与object_create相似,只是只修改当前记录而不创建新记录
- use_create
1.current - 修改更新到当前记录
2.other - 修改更新到通过crud_model_id 或 ref_object指定的新记录
3.expression - 修改更新到通过crud_model_id 以及 write_expression筛选过后的记录 - write_expression - 返回一条记录或对象id的python表达式
- fields_lines,crud_model_id,ref_object与object_create一致
- use_create
multi
将通过child_ids many2many关系定义的action一个个执行,如果有action自己返回action,最后一个action被返回给客户端作为将前multi action的下一个actiontrigger 发送一个信号给工作流
- wkf_transition_id - 用于触发的与workflow.transition有Many2one关系的id
- use_relational_model - 如果是base(默认),则触发当前记录的维护信号;如果是relational,则触发通过wkf_model_id 和 wkf_field_id筛选出来的当前记录的字段
client_action -- 返回通过action_id定义的action
四:报表Action (ir.actions.report.xml)
此action为打印报表的触发器:
- name(必选) -- 在一个列表里进行查找时使用
- model (必选) -- 报表所反映的数据来源model
- report_type (必选) -- qweb-pdf | qweb-html
- report_name -- 报表命名,用于输出的pdf文件名
- groups_id -- 可以读取或使用当前报表的用户组,Many2many字段
- paperformat_id -- 报表所使用的纸张格式,默认使用公司的格式,Many2one字段
- attachment_use -- 当取值true的时候只在第一次请求时生成报表,之后直接从保存的报表打印,可用于生成后不会有改变的报表
- attachment -- 使用python表达式来定义报表名字,该记录可用变量object访问
五:客户端Actions (ir.actions.client)
触发一个完全在客户端实现的action:
- tag -- action在客户端的标识符,一般是一个专用的字符串
- params (可选) -- 用来传给客户端的python数据字典格式数据
- target (可选) -- current:当前内容区打开action,fullscreen:以全屏模式打开,new:以弹出框打开
odoo开发教程十:Actions的更多相关文章
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能
在Senparc.Weixin.dll v4.5.7版本开始,我们提供了Web代理功能,以方便在受限制的局域网内的应用可以顺利调用接口. 有关的修改都在Senparc.Weixin/Utilities ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明
微信官方的多客服接口原理是通过用户发送的信息,开发者服务器返回一条指定类型的响应信息,使用户的对话状态切换到官方的多客服状态(持续一段时间),这段时间内用户发送的所有信息都不会到达开发者的服务器,而是 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明
紧接上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明>,这里专讲OAuth2.0. 理解OAuth2.0 首先我们通过一张图片来了解一下OAu ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重
为了确保信息请求消息的到达率,微信服务器在没有及时收到响应消息(ResponseMessage)的情况下,会多次发送同一条请求消息(RequestMessage),包括MsgId等在内的所有文本内容都 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密
前不久,微信的企业号使用了强制的消息加密方式,随后公众号也加入了可选的消息加密选项.目前企业号和公众号的加密方式是一致的(格式会有少许差别). 加密设置 进入公众号后台的“开发者中心”,我们可以看到U ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十六):AccessToken自动管理机制
在<Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明>中,我介绍了获取AccessToken(通用接口)的方法. 在实际的开发过程中,所有的高级接口都需 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十):使用菜单消息功能
在<Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明>教程中,我们介绍了如何使用“客服接口”,即在服务器后台,在任意时间向微信发送文本.图文.图片等不 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十九):MessageHandler 的未知类型消息处理
这是<微信开发深度解析:微信公众号.小程序高效开发秘籍>出版之后写的第一篇微信相关的文章.从这一篇开始,将介绍第一版出版之后添加或修改的功能,或者对书上内容需要做的补充. MP v14.8 ...
- webpack4 系列教程(十五):开发模式与webpack-dev-server
作者按:因为教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十五):开发模式与 webpack-dev-server>原文地址.更欢迎来我的 ...
- iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2)
iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2) 此时,当用户轻拍按钮后,一个叫tapButton()的方法就会被触发. 注意:以上这一种方式是动作声明和关联一起进行的,还有一种先 ...
随机推荐
- 20张图说清楚 IP 协议
大家好,我是风筝 轻解网络系列又来了,今天咱们说说 IP 协议,这可是网络协议中最最核心的一个协议了,还记得我们刚刚知道什么是IP地址.怎么给电脑修改 IP 的时候吗?今天我们就来探究一下 IP 协议 ...
- Java面试——数据库
一.数据库隔离级别 [1]Read Uncommitted(读取未提交内容):出现脏读,也就是可能读取到其他会话中未提交事务修改的数据.[2]Read Committed(读取已提交内容):不可重复读 ...
- MyBatisPlus 整合 SpringBoot 遇见的问题(二)
[异常]:Cause: java.sql.SQLSyntaxErrorException: Unknown column 'udf1' in 'field list'...... SQL: SELEC ...
- ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
可以先看下列文章 目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文 ...
- Tarjan强连通分量(scc)
概念解释 节点强连通:\(v_i\)与\(v_j\)(\(v_i ≠ v_j\))强连通是指从\(vi\)到\(vj\)和从\(vj\)到\(vi\)都存在路径,即两节点互相可达 强连通图:在有向图\ ...
- Web 开发的常规流程
Web 开发的常规流程 What is the Web? 简单地说,网络是一个遍布全球的网络,它连接大量设备并允许它们相互通信 Internet 上的网站托管在称为服务器的设备上,当您与 Intern ...
- Spring事务——传播性
传播性 事务传播行为是为了解决业务层方法之间互相调用的事务问题,当一个事务方法被另一个事务方法调用时,事务该以何种状态存在?例如新方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运 ...
- PyCharm在Linux安装出现报错-Java Runtime (class file version 55.0)
在Linux桌面下安装PyCharm的时候出现如下报错 root@ubuntu:~# cd pycharm-community-2021.1.1 root@ubuntu:~/pycharm-commu ...
- ChatGPT,我彻彻底底沦陷了!
当谈到人工智能技术的时候,我们会经常听到GPT这个术语.它代表"Generative Pre-trained Transformer",是一种机器学习模型,采用了神经网络来模拟人类 ...
- Deep-DRM算法理解
title: GCN学习笔记 categories: - 生物信息学 date: 2023-03.13 hidden: true mathjax: true GCN GCN(Graph Convolu ...