odoo17 | 视图操作按钮

前言

到目前为止,我们主要通过声明字段和视图来构建我们的模块。在上一章中,我们刚刚通过计算字段和onchanges引入了业务逻辑。在任何真实的业务场景中,我们都会希望将一些业务逻辑链接到操作按钮。在我们的房地产示例中,我们希望能够:

  • 取消或设置已售出属性

  • 接受或拒绝报价

有人可能会说,我们可以通过手动更改状态来做这些事情,但这并不方便。此外,我们想添加一些额外的处理:当接受要约时,我们想设置房产的销售价格和买方。

Object Type

目标

  • 设置取消或将房产设置为已售出:
    在这里插入图片描述
    已取消的属性不能出售,已出售的属性也不能取消。为了清晰起见,在视图上添加了state字段。

  • 设置接受或拒绝一份工作:
    在这里插入图片描述

  • 一旦报价被接受,卖方和买方的价格应确定:
    在这里插入图片描述
    在我们的房地产模块中,我们希望将业务逻辑与一些按钮链接起来。最常见的做法是:

  • 在表单视图中添加一个按钮,例如在表单视图的头部:

<form><header><button name="action_do_something" type="object" string="Do Something"/></header><sheet><field name="name"/></sheet>
</form>

并将此按钮链接到业务逻辑代码(即 py模型的方法中)中:

from odoo import fields, modelsclass TestAction(models.Model):_name = "test.action"name = fields.Char()def action_do_something(self):for record in self:record.name = "Something"return True

通过将 type=“object” 赋值给按钮,Odoo框架将在给定模型上执行一个name=“action_do_something” 的Python方法。

要注意的第一个重要细节是,我们的方法名没有下划线(_)作为前缀。这使得我们的方法成为一个公共方法,可以直接从Odoo接口调用(通过RPC调用)。到目前为止,我们创建的所有方法(compute, onchange)都是在内部调用的,所以我们使用了带有下划线前缀的私有方法。应该始终将方法定义为私有的,除非需要从用户界面调用它们。

还要注意,我们在self上循环。总是假设一个方法可以在多个记录上调用;这有利于可重用性。

最后,公共方法应该总是返回一些东西,以便可以通过XML-RPC调用它。当有疑问时,只需返回True。

在Odoo源代码中有数百个示例。视图中的这个按钮和它对应的Python方法就是一个例子

 <button name="action_set_won_rainbowman" string="Mark Won"type="object" class="oe_highlight"attrs="{'invisible': ['|','|', ('active','=',False), ('probability', '=', 100), ('type', '=', 'lead')]}"/>

对应的Python方法

 def action_set_won_rainbowman(self):self.ensure_one()self.action_set_won()message = self._get_rainbowman_message()if message:return {'effect': {'fadeout': 'slow','message': message,'img_url': '/web/image/%s/%s/image_1024' % (self.team_id.user_id._name, self.team_id.user_id.id) if self.team_id.user_id.image_1024 else '/web/static/src/img/smile.svg','type': 'rainbow_man',}}return True

Action Type

之前我们创建了一个菜单操作(action)链接到菜单的动作。

<menuitem id="properties_menu_action" name="广告信息" action="action_estate_property"/>

你可能想知道是否可以将操作(action)链接到按钮。一种方法是:

<button type="action" name="%(action_estate_property)d" string="My Action"/>

我们使用 type=“action” ,并在name中引用外部标识符。

在下一章中,我们将看到如何防止在Odoo中编码不正确的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素

代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素 文章目录 代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素1 数组理论基础&#xff08;基于面试&#xff09;1.1 面试问题针对 Python1.2 面试问题针对 C 2 LeetCode 704.二分查找2.1 二分查找的实现2.2 P…

Buzz 离线音频转字幕工具(完全免费,无需登录)

关于 Buzz Buzz 是一款可以自动识别语音为文本字幕的软件工具&#xff0c;基于 OpenAI 开源的 Whisper 自动语音识别模型&#xff0c;可以批量将音频或者是视频中的内容自动转化为带有时间的字幕&#xff0c;速度非常快&#xff0c;是一款能极大提高效率的生产力小工具。 Bu…

JavaScript-对象-笔记

1.字面量创建对象、对象的使用 对象就是一组 属性和方法的集合 属性&#xff1a; 特征 相当于变量 静态 是什么 方法&#xff1a; 行为 相当于函数 动态 干什么 创建对象 创建对象的第一种&#xff1a;使用字面量 {} 对象中的元素是键值对 使用逗号隔开 键:值 的形式 var 对象名…

Vue项目在ie浏览器中显示白屏优化提示

在工作中用到Vue开发项目&#xff0c;用户在IE浏览器打开页面&#xff0c;结果显示空白屏。作为开发者当然知道是浏览器版本过低导致语法不支持&#xff0c;但是用户不知情的情况下显示空白屏就很不友好。这时候有必要在页面上做点提示语告诉用户切换浏览器&#xff0c;下面是页…

千里之行始于足下,2024年低代码数字化选型“避坑指南“

千里之行&#xff0c;始于足下。企业数字化转型建设之路&#xff0c;亦始于选型。 在转型建设的过程中&#xff0c;数字化系统的选型往往被视为最关键的环节。一旦选型不当或出现失误&#xff0c;可能导致项目进展受阻&#xff0c;甚至直接导致项目失败。因此&#xff0c;一个良…

社交距离 - 华为OD统一考试

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 疫情期间,需要大家保证一定的社交距离,公司组织开交流会议,座位有一排共N个座位,编号分别为[0…N-1],要求员工一个接着一个进入会议室,并且可以在任何时候离开会议室。 满足:每当一个员工进入时,…

Edge扩展插件如何安装位置?

Edge浏览器的扩展插件安装后&#xff0c;它们的相关文件通常存储在以下位置&#xff1a; 在Windows操作系统上&#xff1a; plaintext %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Extensions 这个路径会根据用户的配置和系统版本有所不同。%LOCALAPPDATA% 是一个环境变…

PyTorch简单易懂的解析 Dropout Layers应用,代码示例

目录 torch.nn子模块Dropout Layers详解 nn.Dropout 用途 用法 使用技巧 注意事项 代码示例 nn.Dropout1d 用途 用法 使用技巧 注意事项 代码示例 nn.Dropout2d 用途 用法 使用技巧 注意事项 代码示例 nn.Dropout3d 用途 用法 使用技巧 注意事项 代码…

【算法专题】动态规划之斐波那契数列模型

动态规划1.0 动态规划 - - - 斐波那契数列模型1. 第 N 个泰波那契数2. 三步问题3. 使用最小花费爬楼梯4. 解码方法 动态规划 - - - 斐波那契数列模型 1. 第 N 个泰波那契数 题目链接 -> Leetcode -1137. 第 N 个泰波那契数 Leetcode -1137. 第 N 个泰波那契数 题目&…

git如何仅合并项目下的某个文件夹

前言 假设目前在做的一个项目名为demoproject&#xff0c;目前版本为v1.0.0&#xff0c;标准开发都是在demoproject上进行的&#xff0c;但是有一个客户需要做定制化&#xff0c;需要将项目中的一些信息改为客户的&#xff0c;于是基于demoproject拉了一个v1.0.0-custom&#…

Unity C# 异步编程模式之等待直到完成模式(wait-until-done模式)

Unity的协程使用的就是wait-until-done模式&#xff0c;下面放上完整代码&#xff1a; using UnityEngine; using System.Threading; using System;delegate int MyDel(int first, int second);//声明委托类型public class AsyncWaitUntilDoneDemo : MonoBehaviour {void Star…

RabbitMQ解决消息丢失以及重复消费问题

文章目录 1、概念2、基于ACK/NACK机制2.1 基于Spring AMQP框架整合ACK/NACK机制2.2 测试消费失败1.02.3 测试结果1.02.4 测试MQ宕机2.5 测试结果2.0 3、RabbitMQ 如何实现幂等性设计3.1 幂等服务设计思路3.1.1 通过雪花算法生成分布式唯一ID3.1.2 通过枚举类&#xff0c;设计Me…

数据库7种范式

在关系数据库设计中&#xff0c;存在多个范式&#xff0c;通常从第一范式&#xff08;1NF&#xff09;到更高阶的范式。以下是一些常见的数据库范式&#xff1a; 1. 第一范式(1NF) 确保每个表的每个列都包含原子值&#xff0c;不可再分。 每个表都应该有一个主键&#xff1a…

MySQL:ERROR 1067 - Invalid default value for ‘end_time‘【解决办法】

问题描述&#xff08;mysql版本&#xff1a;5.7.36&#xff09;&#xff1a; 今天在使用Navicat可视化工具运行sql文件&#xff0c;发生如下错误&#xff1a; 在图中&#xff0c;sql是没有错误的&#xff0c;但是运行报错Invalid default value for end_time。 解决办法&#…

Python的安装与卸载【Windows系统】

在 Windows 上安装与卸载 Python Python的安装 下载Python 安装Python 下载完后打开安装包 注意最底下的"Add Python 3.8 to Path"&#xff08;将Python加入环境变量&#xff09;一定要勾选&#xff01;&#xff01;&#xff01;这样就可以免去之后环境配置的烦恼…

方差分解(variance decomposition)研究发展史

方差分解(variance decomposition)研究发展史 1 早期技术概述1.1 方差组分分析(variance components analysis, VCA )1.2 方差分析(Analysis of Variance,简称ANOVA)2 交叉嵌套数据结构和早期方差分解技术的局限性3 多层次建模方法的方差分解参考1 早期技术概述 方差分…

计算机网络——应用层(2)

计算机网络——应用层&#xff08;2&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) Web和HTTP概念解读HTTPHTTP请求和响应包含内容常见的请求方法Web缓存优点缺点 总结 DNS提供的服务 小程一言 我的计算机网络专栏&#xff0c;是自己在计算机网络学习过程…

【手搓深度学习算法】用线性回归预测波士顿房价

线性回归 线性回归是一种监督学习方法&#xff0c;用于建立因变量与一个或多个自变量之间的关系。线性回归的目标是找到一条直线&#xff0c;使得所有数据点到这条直线的距离之和最小。 线性回归的基本形式如下&#xff1a; y β 0 β 1 x 1 β 2 x 2 . . . β n x n ϵ…

HTML 基本元素是什么?

"HTML 基本元素" 是指构成 HTML 网页的基本部分。HTML 是超文本标记语言的简称&#xff0c;是一种用于创建网页的标准标记语言。HTML 基本元素包括标题、段落、列表、链接、图片等&#xff0c;这些元素用于构建网页的结构和内容。通过使用 HTML 基本元素&#xff0c;…

Sui 2024 Space首秀精彩集锦

1月5日&#xff0c;Sui Network官方在X平台进行了名为《Looking Ahead: What’s in Store for 2024》的2024 Space首秀&#xff0c;Mysten Labs联合创始人兼首席产品官Adeniyi Abiodun和首席技术官Sam Blackshear&#xff0c;与全球Sui支持者一起探讨Sui网络的2024发展大计&…