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

如何在odoo的默认模块上继承和添加新的状态?

在odoo的默认模块上继承和添加新的状态可以通过以下步骤实现:

  1. 创建一个自定义模块:首先,创建一个新的odoo模块,可以使用odoo的开发工具或者命令行工具创建一个新的模块。
  2. 继承默认模块:在自定义模块中,通过继承默认模块的方式来扩展其功能。可以使用_inherit关键字来指定要继承的默认模块。
  3. 添加新的状态字段:在自定义模块中,通过添加新的状态字段来扩展默认模块的状态。可以使用fields.Selection字段类型来定义一个状态字段,并指定其可选值。
  4. 更新视图:在自定义模块中,更新默认模块的视图以显示新的状态字段。可以通过继承默认模块的视图,并在视图中添加新的状态字段。
  5. 更新业务逻辑:在自定义模块中,更新默认模块的业务逻辑以处理新的状态。可以通过继承默认模块的业务逻辑,并在适当的地方添加新的状态处理逻辑。
  6. 安装和使用自定义模块:最后,将自定义模块安装到odoo中,并在应用中启用该模块。然后,就可以在默认模块中使用新的状态了。

举例来说,假设要在odoo的销售模块中添加一个新的状态字段"Approved",可以按照以下步骤进行操作:

  1. 创建一个自定义模块:可以使用odoo的开发工具或者命令行工具创建一个新的模块,例如命名为"custom_sale".
  2. 继承销售模块:在自定义模块中,通过继承销售模块的方式来扩展其功能。可以在自定义模块的__manifest__.py文件中使用_inherit关键字指定要继承的销售模块,例如'depends': ['sale']
  3. 添加新的状态字段:在自定义模块的models.py文件中,使用fields.Selection字段类型来定义一个状态字段,并指定其可选值,例如:
代码语言:python
复制
class SaleOrder(models.Model):
    _inherit = 'sale.order'

    state = fields.Selection([
        ('draft', 'Quotation'),
        ('sent', 'Quotation Sent'),
        ('approved', 'Approved'),
        ('sale', 'Sales Order'),
        ('done', 'Locked'),
        ('cancel', 'Cancelled'),
    ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft')
  1. 更新视图:在自定义模块的views.xml文件中,更新销售模块的视图以显示新的状态字段。可以通过继承销售模块的视图,并在视图中添加新的状态字段,例如:
代码语言:xml
复制
<record id="view_sale_order_form_inherit" model="ir.ui.view">
    <field name="name">sale.order.form.inherit</field>
    <field name="model">sale.order</field>
    <field name="inherit_id" ref="sale.view_order_form"/>
    <field name="arch" type="xml">
        <field name="state" position="after">
            <field name="approved"/>
        </field>
    </field>
</record>
  1. 更新业务逻辑:在自定义模块的models.py文件中,更新销售模块的业务逻辑以处理新的状态。可以通过继承销售模块的业务逻辑,并在适当的地方添加新的状态处理逻辑,例如:
代码语言:python
复制
class SaleOrder(models.Model):
    _inherit = 'sale.order'

    @api.multi
    def action_approve(self):
        self.write({'state': 'approved'})

    @api.multi
    def action_confirm(self):
        res = super(SaleOrder, self).action_confirm()
        # 添加其他逻辑
        return res
  1. 安装和使用自定义模块:将自定义模块打包成odoo模块文件,并在odoo中安装该模块。然后,在odoo的销售模块中就可以看到新的状态字段"Approved"了。

注意:以上步骤仅为示例,实际操作中可能需要根据具体需求进行调整。

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

请注意,以上链接仅供参考,具体产品和服务选择应根据实际需求进行评估和决策。

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

相关·内容

何在 Linux 扫描检测 LUN SCSI 磁盘

当 Linux 系统连接到 SAN(存储区域网络)后,你需要重新扫描 iSCSI 服务以发现 LUN。 要做到这一点,你必须向存储团队提供 Linux 主机 WWN 号所需 LUN 大小。...8.x(RHEL - Red Hat Enterprise Linux)系统, CentOS Oracle Linux。...方法 1:如何使用 /sys 类文件在 Linux 扫描 LUN SCSI 磁盘 sysfs 文件系统是一个伪文件系统,它为内核数据结构提供了一个接口。...sysfs 下文件提供了关于设备、内核模块、文件系统其他内核组件信息。 sysfs 文件系统通常被挂载在 /sys。通常,它是由系统自动挂载。...# ls /dev/disk/by-id | grep -i "serial-hex of LUN" 方法 2:如何使用 rescan-scsi-bus.sh 脚本在 Linux 扫描 LUN

4.3K10

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

继承(Inheritance) Odoo一个强大方面是它模块化。模块专用于业务需求,但模块也可以相互交互。这对于扩展现有模块功能非常有用。...在介绍特定Odoo模块继承之前,让我们看看如何更改标准CRUD(创建、检索,更新或删除)方法行为 Python继承(Python Inheritance) 目标: 不能删除状态不为New、Canceled...事实,多亏经典Python继承,我们模型中已经包含了这样操作: from odoo import fields, models class TestModel(models.Model):...为此,我们需要向res.users模型添加一个字段,并调整其视图以显示它。 Odoo提供了两种继承机制来以模块方式扩展现有模型。...第一继承机制允许模块通过以下方式修改在另一个模块中定义模型行为: 向模型添加字段 覆盖模型中字段定义 给模型添加约束 给模型添加方法 重写模型中现有方法 第二种继承机制

2.2K20

何在 CentOS 8 安装 Odoo 13

这个指南讲解了如何在 CentOS 8 上一个 Python 虚拟机环境中从源码安装 Odoo 13。我们将会从 Github 编译 Odoo 源码并且配置 Nginx 作为反向代理服务器。...九、将 Nginx 配置成 SSL 代理服务器 默认 Odoo 网站服务器通过 HTTP 服务。...十、改变监听端口 这一步是可选,但是它是一个很好实践操作。 默认情况下,Odoo 服务监听所有网络接口8069端口。...在这篇指南中,我们将 Odoo,PostgreSQL Nginx 安装在同一个服务器。依赖于你设置,你服务器还有其他服务。...十二、总结 这篇指南带你浏览了如何在 CentOS 8 Python 虚拟环境中 安装 Odoo 13,并使用 Nginx 作为反向代理服务器。

3.9K20

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

模块交互 在上一章中,我们使用继承来修改模块行为。在我们房地产场景中,我们希望更进一步,能够为客户生成发票。...在我们案例中,该模块依赖estate account,包括房产发票创建逻辑。采用这种方式,estateaccount模块可以独立安装。当两者都安装后,链接模块将提供新功能。...练习--创建链接模块 创建依赖estate account estate_account 空壳模块,创建以后安装该模块。你可能会注意到,Invoicing 应用也被安装了。...为此,我们需要在estate_account模块中为创建一个模型,继承estate.property模型。...不幸是,没有一种简单方法可以知道如何在Odoo中创建任何给定对象。大多数时候,有必要查看其模型,以找到所需字段并提供适当值。 学习一个好方法是看看其他模块是如何完成你想做事情

1.6K10

在Ubuntu 16.04安装Odoo 10

在此示例中,我们将使用Odoo默认端口8069,但这可能是您稍后在配置文件中指定任何端口。如果您计划运行任何其他服务,也可以在此处添加其端口。...如果您使用自定义模块,请添加替换您自己路径。...包括日志文件路径,并添加一个行:logfile = /var/log/odoo/odoo-server.log。如果您打算仅使用journald用于记录,则可以跳过此行。...或者,我们可以包含一个行,指定用于连接Odoo前端端口:xmlrpc_port = 8069。只有在计划在同一服务器运行多个Odoo实例(或版本)时才有意义。...对于正常安装,您可以跳过此行,并且此Odoo实例将默认连接到端口8069。 注意 配置日志部分中所述,在Ubuntu 16.04中有很多Odoo日志记录选项。

3.3K42

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

这些实例表示每个数据库可用模型,取决于该数据库安装模块。每个实例实际类都是从创建和继承相应模型Python类构建。...and extension) Odoo提供三种不同机制,以模块化方式扩展模型: 从现有模型创建模型,向副本中添加信息,但保留原始模块 扩展其他模块中定义模型,替换以前版本 将模型一些字段委派给它包含记录...经典继承 当同时使用_inherit _name 属性时,Odoo使用现有模型(通过_inherit提供)作为base创建模型。...模型从其base中获取所有字段、方法元信息(默认值等)。...env['extension.0'].func({}) 返回: test b 注意: 如果同时继承抽象模块非抽象模块,并把_name配置为非抽象模块,抽象模块字段也会添加到非抽象模块对应表 委托(

13.2K10

odoo 权限管理学习总结

用户组用户组关系:用户组可以被用户组继承(伪继承),当继承某个用户组时,本组用户也会自动加入继承用户组。...全局规则(Global rules) VS 组规则(group rules) 全局规则组规则在组成组合方式存在很大差异: 全局规则全局规则之间取交集,如果两个全局规则都生效,则必须满足两者才能授予访问权限...组规则组规则之间取并集,如果两个组规则都生效,则满足其中之一就可以授予访问权限。这意味着添加组规则可以扩展访问,但不能超出全局规则定义范围。...全局规则集组规则集之间取交集,这意味着添加到给定全局规则集第一个组规则将限制访问。...' 说明:Odoo 13.0开始,移除multi,multi作为默认实现。

10K20

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

模型基本字段 在上一章末尾,我们创建一个odoo模块。然而,此时它仍然是一个空壳,不允许我们存储任何数据。...odoo框架提供了数据库交互工具 开始练习前,请确保estate模块已被安装,也就是说必须以installed状态出现在Apps列表中,如下 对象关系映射(Object-Relational Mapping...ORM 层是odoo一个关键组件。该层避免了手动写入大部分SQL并提供可扩展性安全服务. 业务对象被定义为继承于 ModelPython类。可以通过在定义中设置属性来配置model。...有些属性是所有字段都拥有的,最常见几个属性如下: string (str, default: 字段名称) UI显示为字段label (用户可见)....创建记录时必须拥有默认值或给定值。

2.2K30

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

实践环境 Odoo 14.0-20221212 (Community Edition) 需求描述 如图,给表单新增一个类似聊天窗口,当记录一些表单活动(本例为自动记录当前记录状态变化) 需求实现 模型定义...odoo14\custom\estate\models\estate_property.py 需要继承mail.thread模型,并为需要追踪字段设置tracking属性,并设置属性值为真值 #!...\odoo\addons\mail\models\mail_thread.py,其字段命名均以message_开头 tracking 该属性为True或数字时,打开针对该属性所属字段修改日志-...__manifest__.py 配置 odoo14\custom\estate\__manifest__.py 需要配置mail模块依赖,因为mail.thread模型归属该模块 #!...\odoo\addons\mail\models\mail_activity.py,其字段命名均以activity_,对应,模型定义中_inherit 属性也需要添加模块,如下: _inherity

70120

何在Ubuntu 18.04上部署Odoo 11

本指南涵盖了在Ubuntu 18.04系统使用Git源代码Python virtualenv安装配置Odoo进行生产所需步骤。...用户 创建一个系统用户组,其主目录/opt/odoo将运行Odoo服务。...pip是一个用于安装管理Python包工具,我们将使用它来安装所有必需Python模块,并将其安装到: pip3 install virtualenv 为我们Odoo 11安装运行创建一个虚拟环境...要为我们自定义模块运行创建一个目录: sudo mkdir /opt/odoo/odoo11-custom-addons sudo chown odoo: /opt/odoo/odoo11-custom-addons...在本指南中,我们在同一台服务器安装了Odoo以及PostgreSQLNginx,根据您设置,您服务器可能还会运行其他服务。 搞定! 如果您有任何问题,请随时在下面留言。

1.9K20

Odoo 菜单定义修改学习总结

odoo菜单定义修改学习总结 环境 odoo-14.0.post20221212.tar 定义菜单 方式1: <?xml version="1.0"?...这种修改方式之所以特殊,是因为它不修改原有菜单定义,而是通过重新定义菜单来修改,可以简单类比为“继承”,具体做法如下: 定义一个菜单,将其id属性值设置为原有菜单所在模块名称及其...id属性值组合,形如:moduleName.source_menu_id(参见下述示例),如果菜单原有菜单在同一个模块,可以省略moduleName.。...,添加子菜单(如果需要的话),添加方式可以参考上文所述,需要注意是,不管采用哪种方式,原有菜单子菜单依然存在,并显示为新定义菜单子菜单 隐藏原有菜单子菜单(如果需要的话) 定义一个,将其id设置为要隐藏子菜单所在模块名称及id属性值组合,形如:moduleName.source_menu_id,如果菜单原有菜单在同一个模块,可以省略moduleName.。

1.3K10

Odoo开发指北 01 初识Odoo

继承开发 Odoo提供了大量现成模块给我们使用,但是某些情况下,我们需要制定符合自己需求功能模块Odoo开发一条黄金准则是——不要修改现有的模块,以免改动后代码与原有模块产生混淆。...因此,odoo提供了继承机制,我们可以选择一个基础模块,然后继承它,在它基础上进行修改、扩展,生成自己模块。...开发自己模块时,需要在模块所在目录下,创建两个文件:init.py__manifest__.py,在其中定义模块初始化操作以及模块描述。...然后使用自己模块:把自己模块路径设置到odoo中,重启odoo让其搜索到自定义模块,即可通过odoo进行安装。...Odoo 脚手架 odoo-bin scaffold 命令新建了我们 aaa 应用 …/odoo-bin scaffold aaa 模块开发流程 分析模块模型,得出模型所需字段有哪些,然后定义模型类

2.3K30

odoo 开发入门教程系列-QWeb简史

表单视图也是如此:尽管使用了一些标记,或,但在设计方面几乎没有什么可做。 然而,如果我们想给我们应用程序一个独特外观,就必须更进一步,能够设计视图。...Odoo自带内置引擎:QWeb模板。QWeb是Odoo使用主要模板引擎。它是一个XML模板引擎,主要用于生成HTML片段页面。 你可能已经在Odoo见过 看板,其中记录以卡片状结构显示。...目标: 本节结束时创建一个房产看板视图 在我们地产应用程序中,我们希望添加一个看板视图来显示我们房产。看板视图是标准Odoo视图(如表单列表视图),但其结构更灵活。...事实,每张卡片结构是表单元素(包括基本HTML)QWeb混合。看板视图定义与列表视图表单视图定义相似,只是它们根元素是kanban。...您可能想看看Kanban中描述各种选项。 练习--添加默认分组 使用合适属性对房产分组,默认按类型分组。你必须阻止拖拽删除。

2K20

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

实践环境 Odoo 14.0-20221212 (Community Edition) 代码实现 模块文件组织结构 说明:为了更好表达本文主题,一些主题无关文件、代码已略去 odoo14\custom...> 说明:,其中estate_customer_tree为下文javascript中定义组件,实现添加自定义按钮...,如果不添加以下这行代码,不刷新当前页面的情况下,无法重复导入相同文件 self.$('.o_estate_customer_upload .o_input_file'...inner 将模板元素内容替换上下文节点元素内容(所有子节点) replace 将模板元素内容替换上下文节点 attributes 模版元素内容应该是任意数量属性元素,每个元素都有一个名称属性一些文本内容...,上下文节点命名属性将被设置为属性元素值(如果已经存在则替换,如果不存在则添加) 注意:参考官方文档,t-extend这种继承方式为旧继承方式,已废弃,笔者实践了最新继承方式,如下 <?

3.4K30

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

在这篇教程里我们将会了解到 Odoo 模型里一些其他类型字段特殊机制,而我依然会继续带领大家一起完善我们 Todo 应用,不断地往里面添加一些功能特性,让它看起来更丰满也更实用一些。...选择字段 在上一篇教程中,我们已经创建好了待办事项模型,但是只是添加了「描述」「已完成?」两个字段,这肯定是不能满足我们需求。...此处我们还给这个字段添加默认值 todo,表示当一个待办事项被创建后,如果没有指定紧急程度,将默认是待办状态。我们可以为任意类型字段添加默认值。...在上一篇教程中我们提到过,在对模型进行改动之后,需要对模块进行升级才能看到变更后样子,除了从应用列表中找到模块进行升级外,我们还可以在命令行中给 Odoo 启动命令加上参数 -u todo 指定升级...仓库地址:Odoo-Tutorial-Demo 写在最后 距离一次更新,已经过了好几个月了,这段时间除了忙公司事情,还额外在做一些别的东西,然后最近在开发一个小程序。

1.3K10

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

一章,我们通过CSV文件添加了数据。当需要添加数据格式简单时,用CSV格式还是很方便,当数据格式更复杂时(比如视图架构或者一个邮件模板),我们使用XML格式。...类似CSV文件,XML文件也必须按约定添加到合适目录,并在 __manifest__.py中进行定义。数据文件中内容也是在模块安装或者更新时按序加载。...卧室数量应该默认为2 默认可用日期应该为3个月 一些属性 在进一步进行视图设计之前,让我们回到模型定义。...我们看到一些属性,required=True,会影响数据库中表模式。其他属性也将影响视图或提供默认值。 练习 -- 添加一些属性到字段。...‘Unknown’,而last_seen 字段默认值为当前时间 练习 -- 设置默认添加适当默认值: 卧室数量默认值为 2 可用日期默认为3个月内 修改 odoo14\custom\estate

2.8K30
领券