首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将按钮功能从一个模型继承到另一个模型中-- Odoo v9社区

在Odoo v9社区中,可以通过继承模型的方式将按钮功能从一个模型继承到另一个模型中。这种继承方式称为模型继承或类继承。

模型继承是Odoo中一种强大的功能,它允许开发人员在不修改原始模型代码的情况下,向模型添加新的字段、方法、视图和按钮等功能。通过继承模型,可以实现代码的重用和模块化开发,提高开发效率。

在Odoo v9社区中,可以使用Python的类继承语法来实现模型继承。首先,需要定义一个新的模型类,并继承自要继承的原始模型类。然后,在新的模型类中,可以添加新的字段、方法和按钮等功能。

以下是一个示例代码,演示了如何将按钮功能从一个模型继承到另一个模型中:

代码语言:python
复制
from openerp import models, fields, api

class ModelA(models.Model):
    _name = 'model.a'

    name = fields.Char(string='Name')

    @api.multi
    def button_function(self):
        # 按钮功能的实现
        pass

class ModelB(models.Model):
    _name = 'model.b'
    _inherit = 'model.a'

    # 在ModelB中继承ModelA的字段和方法

    @api.multi
    def button_function(self):
        # 可以在ModelB中重写按钮功能,实现自定义逻辑
        # 或者直接调用父类的按钮功能
        return super(ModelB, self).button_function()

在上述示例中,ModelB继承自ModelA,并且继承了ModelA的字段和按钮功能。如果需要在ModelB中添加新的字段或方法,只需要在ModelB中定义即可。

这种模型继承方式在Odoo中被广泛应用,可以用于扩展现有模块的功能,或者创建新的模块。它提供了灵活的开发方式,使开发人员能够根据具体需求进行定制开发。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

odoo 开发入门教程系列-模块交互

模块交互 在上一章,我们使用继承来修改模块的行为。在我们的房地产场景,我们希望更进一步,能够为客户生成发票。...在我们的案例,该模块依赖estate 和account,包括房产的发票创建逻辑。采用这种方式,estate和account模块可以独立安装。当两者都安装后,链接模块提供新功能。...我们希望为estate.property模型添加功能,即我们希望在出售房产时添加一些额外的逻辑。 第一步,我们需要扩点击“Sold”按钮时调用的操作。...为此,我们需要在estate_account模块为创建一模型继承estate.property模型。...不幸的是,没有一种简单的方法可以知道如何在Odoo创建任何给定的对象。大多数时候,有必要查看其模型,以找到所需的字段并提供适当的值。 学习的一好方法是看看其他模块是如何完成你想做的事情的。

1.6K10

odoo 给列表视图添加按钮实现数据文件导入

,想复用上述js,需要替换js以下内容: 修改estate.upload.customer.mixin为其它自定义全局唯一值 替换o_estate_customer_upload为在对应按钮视图模板定义的对应...class属性值 替换estate.CustomerHiddenUploadForm为在对应按钮视图模板定义的隐藏表单模版名称 替换EstateCustomerListView.buttons为对应按钮视图模板定义的按钮模版名称...t-operation属性所在元素称为模板元素),可选值如下: append 模板元素内容(body)追加到上下文节点的最后一子元素后面。...prepend 模板元素内容插入到上下文节点的第一子元素之前。 before 模板元素内容插入到上下文节点之前。 after 模板元素内容插入到上下文节点之后。...inner 模板元素内容替换上下文节点元素内容(所有子节点) replace 模板元素内容替换上下文节点 attributes 模版元素内容应该是任意数量的属性元素,每个元素都有一名称属性和一些文本内容

3.4K30

odoo 开发入门教程系列-继承(Inheritance)

继承(Inheritance) Odoo的一强大方面是它的模块化。模块专用于业务需求,但模块也可以相互交互。这对于扩展现有模块的功能非常有用。...事实上,多亏经典的Python继承,我们的模型已经包含了这样的操作: from odoo import fields, models class TestModel(models.Model):...为此,我们需要向res.users模型添加一字段,并调整其视图以显示它。 Odoo提供了两种继承机制来以模块化的方式扩展现有模型。...第一继承机制允许模块通过以下方式修改在另一个模块定义的模型的行为: 向模型添加字段 覆盖模型字段的定义 给模型添加约束 给模型添加方法 重写模型的现有方法 第二种继承机制...odoo,第一种机制最常用。在我们的例子,我们希望向现有模型添加一字段,这意味着我们将使用第一种机制。

2.2K20

Odoo开发指北 01 初识Odoo

继承开发 Odoo提供了大量现成的模块给我们使用,但是某些情况下,我们需要制定符合自己需求的功能模块。Odoo开发的一条黄金准则是——不要修改现有的模块,以免改动后的代码与原有模块产生混淆。...因此,odoo提供了继承机制,我们可以选择一基础模块,然后继承它,在它的基础上进行修改、扩展,生成自己的模块。...然后使用自己的模块:把自己的模块路径设置odoo,重启odoo让其搜索自定义模块,即可通过odoo进行安装。...类,定义出的模型类会自动与Odoo提供的ORM接口匹配,也就是说这些模型类会自动存入sql。...security:对模块的访问权限控制,在ir.model.access.csv文件定义。还可以新建一record_rule.xml,在其中进行更细化的权限控制。

2.3K30

odoo wizard界面显示带复选框列表及勾选数据获取

选取ffers"按钮),弹出一向导(wizard)界面,并将详情页内联tree视图("Offers" Tab页)的列表记录展示向导界面,且要支持复选框,用于选取目标记录,然执行目标操作。...向导只是一继承TransientModel而非model的模型。...以上参数同下文saveSelectionsToSessionStorage 参数可同时共存 如果需要将action绑定指定模型指定视图的Action,可以在ir.actions.act_window定义添加...> 说明: saveSelectionsToSessionStorage 为"true"则表示点击复选框时,当前选取的记录存到浏览器sessionStorage,可选 odoo14\custom\estate...odoo14\custom\estate\static\src\js\list_renderer.js 注意:之所以uuid函数定义在list_renderer.js,是为了避免因为js顺序加载问题

5.2K60

使用Kompose从Docker Compose 迁移到 Kubernetes

您可以使用多种解决方案,例如 Swarm、Kubernetes……从一定数量的应用程序和/或基础设施,Kubernetes在高可用性和弹性方面往往占主导地位。...我们知道这是一 Docker Compose 配置迁移到Kubernetes清单的工具。 Kompose 工具是一开源项目,5 年来一直得到社区的一致支持。几个月来,一些拉取请求也得到了验证。...例如,在我们的示例Odoo CRM 需要其 URL,以便 Traefik 重定向它。...此外,模拟容器配置traefik ,以便在功能上对应于所请求的内容:在特定端口上打开的服务,并允许在容器的给定端口上接收请求。...帮助调试的资源更难找到。 另一个副作用:在部署.

3.5K30

odoo ORM API学习总结兼orm学习教程

Many2many 或者 One2many 字段 related 可以用于引用另一个模型的 One2many 或Many2many 字段,前提是通过当前模型的一Many2one关系来实现的。...访问这些辅助记录之一预取同一模型的所有辅助记录。...: 从现有模型创建新模型,向副本添加新信息,但保留原始模块 扩展其他模块定义的模型,替换以前的版本 模型的一些字段委派给它包含的记录 经典继承 当同时使用_inherit和 _name 属性时,...模型继承继承父类的所有属性,会拷贝字段、属性和方法。...Delegation) 第三种继承机制提供了更大的灵活性(可以在运行时更改),但威力更小:使用_inherits模型当前模型未找到的任何字段的查找委托给“children”模型

13.3K10

odoo 为form表单视图添加chatter功能

实践环境 Odoo 14.0-20221212 (Community Edition) 需求描述 如图,给表单新增一类似聊天的窗口,当记录一些表单活动(本例为自动记录当前记录状态变化) 需求实现 模型定义...odoo14\custom\estate\models\estate_property.py 需要继承mail.thread模型,并为需要追踪的字段设置tracking属性,并设置属性值为真值 #!...estate.property' _description = 'estate property table' _inherit = ['mail.thread'] # 必须继承模型...,该模型类型为models.AbstractModel,其定义文件为 odoo14\odoo\addons\mail\models\mail_thread.py,其字段命名均以message_开头...,类型为models.AbstractModel,定义在文件 odoo14\odoo\addons\mail\models\mail_activity.py,其字段命名均以activity_,对应的,模型定义

70520

快速部署Odoo,开启高效企业管理

凭借着这些高效实用的功能Odoo拥有了超过730合作伙伴和200万用户。Odoo非常成功,可谓是功能非常强大的企业应用了,用户可以直接从模块库中选择安装适用模块,或进行模块卸载,升级的管理操作。...在云服务器部署Odoo镜像,按自己的需求选择设置。并检查: 在云控制台获取您的 服务器公网IP地址。 在云控制台安全组,检查 Inbound(入)规则 下的 TCP:80 端口是否开启。...Odoo 安装向导 下面分别介绍社区版和企业版安装向导: 社区版 使用本地 Chrome 或 Firefox 浏览器访问网址:http://域名 或 http://Internet IP, 进入初始化页面...填写好所有参数,点击【create database】按钮,开始初始化安装。...请注意试用期后正式向 Odoo 官方订阅企业版,否则数据库被清空 更多应用的安装和系统管理类似社区版 免费试用期结束之后, Odoo 官方 (opens new window)进行企业版订阅,需折扣可以联系我们

2.2K10

odoo 开发入门教程系列-模型和基本字段

模型和基本字段 在上一章的末尾,我们创建一odoo模块。然而,此时它仍然是一空壳,不允许我们存储任何数据。...ORM 层是odoo的一关键组件。该层避免了手动写入大部分SQL并提供可扩展性和安全服务. 业务对象被定义为继承于 Model的Python类。可以通过在定义设置属性来配置model。...model _name的 . 会被ORM自动化转为_ 。按约定所有的model位于一名为 models 的目录,并且每个mode被定义为一Python文件。...=custom,odoo/addons -r myodoo -w test123 -d odoo -u estate -u estate 表示更新 estate 模块,也就是说ORM应用数据库模式变更...给模型表estate_property添加字段 添加以下字段 Field Type name Char description Text postcode Char date_availability

2.3K30

轻松部署Odoo软件

Odoo有强大而灵活的系统架构,可在不修改核心代码的情况下修改功能、升级模块、新增模块。 Odoo活跃的社区在不断修正各类错误,贡献各种用途的模块,产品迭代速度非常快。...准备 在云控制台获取您的 服务器公网IP地址 在云控制台安全组,检查 Inbound(入)规则 下的 TCP:80 端口是否开启 若想用域名访问 Odoo,请先到 域名控制台 完成一域名解析 Odoo...社区版初始化页面] 填写好所有参数,点击【create database】按钮,开始初始化安装。...部署是一序列软件按照不同顺序,先后安装并配置服务器的过程,是一复杂的系统工程。 安装是单一的软件拷贝服务器之后,启动安装向导完成初始化配置的过程。 安装相对于部署来说更简单一些。...,订阅镜像一方面省去了安装麻烦,另外一方面可以在运维过程获得我们的技术支持 总体费用 = 云服务器费用 + 镜像费用 + 企业版授权费用 Odoo 社区版可以升级企业版吗?

4.8K00

odoo 开发入门教程系列-约束(Constraints)

约束(Constraints) 上一章介绍了向模型添加一些业务逻辑的能力。我们现在可以按钮链接到业务代码,但如何防止用户输入错误的数据?...SQL 参考:与此主题相关的文档可以查看 Models 和PostgreSQL文档 我们通过模型属性_sql_constraints来定义SQL约束,该属性被赋值为一包含三元组(name, sql_definition..., ] 练习--添加SQL约束 添加以下约束对应模型: 房产预期价格必须为正数 房产售价必须为正数 报价必须为正数 房产标签名称和类型名称必须唯一 使用-u estate选项重新启动服务器以查看结果...在这种情况下,我们需要一Python约束。 Python约束定义为用 constrains()修饰的方法,并在记录集上调用。修饰符指定约束涉及哪些字段。...当修改这些字段的任何字段时,将自动计算约束。如果不满足该方法的恒定式,则该方法引发异常: from odoo.exceptions import ValidationError ...

1.4K20

odoo 开发入门教程系列-一些用户界面

当数据链接到视图时,我们将它们添加到views文件夹 本章,我们通过XML文件加载我们第一action和菜单。Actions 和菜单为数据库的标准记录。...我们Real Estate例子,希望菜单连接到 estate.property model, 以便创建一新记录。...然而,菜单总是遵循一种体系结构,实际上有三层次的菜单: 根菜单,显示在App切换器Odoo社区版切换器是一下拉菜单) 第一级菜单,显示在顶部栏 动作菜单 最容易的方式是在XML文件定义结构来创建菜单...我们看到一些属性,如required=True,会影响数据库的表模式。其他属性也影响视图或提供默认值。 练习 -- 添加一些属性字段。...当需要相关行为时,需要在模型定义这些保留字段。 练习 -- 添加active字段 添加一 active 字段estate.property 模型

2.8K30

odoo 开发入门教程系列-模型之间的关系(Relations Between Models)

模型之间的关系(Relations Between Models) 上一章介绍了为包含基本字段的模型创建自定义视图。然而,在任何真实的业务场景,我们都需要不止一模型。此外,模型之间的链接是必要的。...人们可以很容易地想象一模型包含客户,另一个模型则包含用户列表。你可能需要参考任何现有业务模型上的客户或用户。...买家可以是任何个人,然而,销售人员必须是房产机构的员工(即odoo用户)。 在odoo,有两种我们经常引用的两种模型: res.partner: 一partner为一物理实体或者法人实体。...这意味着可以多个"tax"添加到我们的测试模型。...首先,我们不需要所有模型的操作或菜单。某些模型只能通过另一个模型访问。在我们的练习中就是这样的:报价总是通过房产获得的。 其次,尽管property_id字段是必需的,但我们没有将其包含在视图中。

4.4K40

odoo 开发入门教程系列-计算的字段和变更(Computed Fields And Onchanges)

然而,我们可能需要给定模型字段之间的链接。有时,一字段的值是根据其他字段的值确定的,有时我们希望帮助用户输入数据。...本章目标 在房地产模型,自动计算总的面积和最佳报价 预期效果: 在地产报价模型,自动计算合法的日期且可被更新 在我们的房地产模块,我们定义了生活区和花园区。...练习--为报价计算一有效期 添加以下字段 estate.property.offer 模型: Field Type Default validity Integer 7 date_deadline...') 另一个解决方法是使用store=True属性存储该字段。...永远不要使用onchange业务逻辑添加到模型。这是一非常糟糕的想法,因为在以编程方式创建记录时不会自动触发onchanges;它们仅在表单视图中触发。

3.1K30

odoo 开发入门教程系列-基本视图

在上一章已经看到,odoo能够为给定模型生成默认视图。实际上,默认视图对于业务应用程序来说是不可接受的。相反,我们至少应该以逻辑的方式组织各个字段。 视图是在带有操作和菜单的XML文件定义的。...last_seen"/> 练习 -- 添加一自定义列表视图 在合适的XML文件为estate.property model定义一列表视图。...在odoo,domain对记录上的条件进行编码:domain是用于选择模型记录子集的条件列表。每个条件都是一包含字段名、运算符和值的三元组。...运算顺序 以二元运算为例,从左至右读入表达式,遇到一操作符后跟随两操作数时,则计算之,然后结果作为操作数替换这个操作符和两操作数;重复此步骤,直至所有操作符处理完毕。...estate.property 模型定义一搜索视图 添加过滤和分组 添加以下内容之前创建就的搜索视图 一显示avaliable地产的过滤器,也就说,state应该为 “New“ 或者“Offer

3.2K40

Odoo 基础教程系列」第三篇——从 Todo 应用开始(2)

在这篇教程里我们将会了解 Odoo 模型里的一些其他类型的字段和特殊机制,而我依然会继续带领大家一起完善我们的 Todo 应用,不断地往里面添加一些新的功能特性,让它看起来更丰满也更实用一些。...选择字段 在上一篇教程,我们已经创建好了待办事项的模型,但是只是添加了「描述」和「已完成?」两个字段,这肯定是不能满足我们的需求的。...在上一篇教程我们提到过,在对模型进行改动之后,需要对模块进行升级才能看到变更后的样子,除了从应用列表中找到模块进行升级外,我们还可以在命令行Odoo 的启动命令加上参数 -u todo 指定升级...而 @api.multi 则表示该方法的 self 是一记录集(多个实例的集合),如果不理解,可以暂时不深究,后面自然会知道这里的实际用法。...然后我们再看到 标签多了一属性 decoration-danger,这个属性可以接受表达式或字段名作为值,当结果为真时,这个属性就会生效, TreeView 满足表达式的行以红色标记

1.3K10
领券