来源:Odoo中的五种action都是继承自ir.actions.actions模型实现的子类,共有五种,下面会一个一个给出具体例子

1、链接Action(ir.actions.act_url):target:self、main、new

 def do_action_html(self):
return {
'type': 'ir.actions.act_url',
'url': "http://www.baidu.com",
'target': 'main',
'res_id': self.id,
}

2、窗口action(ir.actions.act_window ):用于打开模型的各种视图

    def action_read_account(self):
self.ensure_one()
domain=[]
context={}
return {
'name': self.display_name,
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
'domain': domain,
'context': context,
'view_mode': 'form',
'res_model': 'account.account',
'res_id': self.id,
}
 

3、服务器Action (ir.actions.server)

 <record id="action_product_price_list_report" model="ir.actions.server">
<field name="name">Generate Pricelist</field>
<field name="groups_id" eval="[(4, ref('group_product_pricelist'))]"/>
<field name="model_id" ref="product.model_product_product"/>
<field name="binding_model_id" ref="product.model_product_product"/>
<field name="state">code</field>
<field name="code">
ctx = env.context
ctx.update({'default_pricelist': env['product.pricelist'].search([], limit=1).id})
action = {
'name': 'Pricelist Report',
'type': 'ir.actions.client',
'tag': 'generate_pricelist',
'context': ctx,
}
</field>
</record>

4、四:客户端Actions (ir.actions.client)

触发一个在客户端实现(即js文件中定义的函数,通过core.action_registry.add(tag,函数名) 注册到odoo中)动作

    def execute(self):
return {
'type': 'ir.actions.client',
'tag': 'reload',
'params': {'wait': True}
}

注意:tag是对应js里面的一个action_registry

js代码模板

var 自定义widget名= Widget.extend({
init:init函数;
start:自动调用到start函数;
其他函数,被init、start调用。//自定义widget,就是自定义动作
}) core.action_registry.add('widget tag名', widget名); return {
widget名: widget名,
};

xml里面

<record id="action_" model="ir.actions.client">
<field name="name"></field>
<field name="res_model"></field>
<field name="tag">widget注册时的tag名</field>
</record>

5、报表渲染设置Action (ir.actions.report.xml)     此action用于在报表渲染前进行一些前置设定,如纸张大小、输出文件名等等

    

<record id="" model="ir.actions.report.xml">
<field name="name"></field>
<field name="model">report.模块名.报表模型名</field>
<field name="report_type">qweb-pdf|qweb-html</field>
<field name="report_name">输出的报表文件名</field>
</record>

odoo里面的动作的更多相关文章

  1. odoo开发笔记:Server+Action服务器动作自动触发执行

           Odoo的市场定位是SME(中小型企业),这个市场的ERP产品,多如牛毛,产品各具特色.不过,Odoo的自动化处理机制,可以睥睨天下,无人能及.包括一些大型国产软件,如用友.金蝶也不具备 ...

  2. odoo视图 “动作” 里添加菜单按钮:案例

    ####################################################################################odoo中常用方法,在动作里面添 ...

  3. (01)odoo模型中调用窗体动作

    *模型代码  addons/stock/stock.py  ----------------   #移库单执行移库动作(弹出详细框)    @api.cr_uid_ids_context    def ...

  4. (27)odoo 中改变菜单动作的默认视图

    一个动作下面有多个视图来支持,像表单视图.列表视图.看板视图.图表视图等 这时我们想改变系统默认指定的视图,方法其实有两种,一种是通过面板改,一种是开发一个小模块 举一例:项目默认打开是用了看板视图, ...

  5. odoo开发笔记-- 按钮动作跳转到其他列表视图默认搜索

    按钮动作跳转到其他列表视图 按照默认指定的条件搜索显示. 效果: 实现方式:

  6. Odoo 二次开发教程(三)-第一个Model及Form、Tree视图

    创建完我们的模块,接下来我们就要为我们的模块添加一些对象.今天我们将要创建一个学生对象(tech.student)和一些基本的属性,并将用form和tree视图将其展示出来: 一. 创建tech.st ...

  7. odoo模块

    odoo模块包括 业务对象,web控制器,数据文件,前面2个是Python模块,而数据文件则是odoo特有的文件,例如,odoo数据文件,web数据.这些数据文件在 __odoo__.py 进行定义, ...

  8. Odoo Many2many 指定默认分组过滤

    在odoo里如果想单击某个菜单打开的页面是自带过滤的,可以在打开菜单的动作中添加默认过滤来实现,今天有同学在群里问,如何在Many2many的添加更多的弹出窗口中添加类似的过滤,其实是非常非常简单的, ...

  9. 第三章 Odoo基本设置

    登录 正常访问http://localhost:8069后,登录的界面如下: 这是Odoo默认的认证方式,也是我们最常见最熟悉的认证方式,7.0以前,数据库中的密码都是以明文方式存储,可以很轻松地在r ...

  10. Odoo启动过程

    [本文基于odoo9源码编写] odoo包含的服务有 db object report workflow web[wsgi] Odoo以wsgi 规范提供Web及Web服务db/object/repo ...

随机推荐

  1. 常见的各类LLM基座模型(GPT、DeepSeek、Qwen等)模型解析以及对比

    From: https://www.big-yellow-j.top/posts/2025/02/15/LLM.html 各类LLM模型技术汇总 只去对比整体框架,对所采用的激活函数,归一化处理,位置 ...

  2. Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南

    引言:AI技术新纪元的破局者 2025年3月6日凌晨,武汉Monica团队正式发布全球首款通用AI代理系统Manus,该工具在GitHub开源社区引发热议,单日Star数突破5万.与传统对话式AI不同 ...

  3. 【Matlab】求解复合材料层合板刚度矩阵及柔度矩阵

    1. matlab文件结构 2. main.m代码 clc clear; warning off; %% %铺层角度数组 angles=[0 90 0]; % ° %单层厚度 ply_thicknes ...

  4. calico配置报错 kubelet.go:2855] "Container runtime network not ready"

    前言 配置 calico 网络插件时,kubectl get node 报错: NoReady kubectl describe node node Name: node Roles: <non ...

  5. Thinkphp8多语言模式,语言包变量占位符实现方法。

    主要实现原理是sprintf()函数,更多占位符写法可以参考sprintf()的介绍. zh-cn.php ...... // 变量用 s% 作为占位符 'sold_books' => 'Sol ...

  6. 软件测试_Fiddler抓包工具

    多数资料摘抄至 https://www.cnblogs.com/miantest/p/7289694.html 一.在 macOS 下如何安装 (https://www.telerik.com/fid ...

  7. English interview - three interesting questions of algorithm analysis (英语面试- 三道有趣的算法分析题目)

    Background introduction Here are some problems related to Big-O notation. From now on, I will try to ...

  8. kubernetes mysql-StatefulSet报错处理

    我们使用网上mysql-StatefulSet集群教程时候mysql-1启动错误,init-error. 第一次尝试解决:我从官网上下载yaml部署依然报错. 第二次尝试解决:网上换各种版本的yaml ...

  9. 【SpringMVC】表单标签 & 处理静态资源

    SpringMVC 表单标签 &处理静态资源 使用 Spring 的表单标签 • 通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便 ...

  10. MySQL 默认字符集

    MySQL 默认的字符集是 latin1,通常跟我们的中文会打架,导致读写异常或乱码,而我们需要的字符集是 utf-8. MySQL 字符集的查看 mysql> show variables l ...