odoo17 | 创建一个新应用程序

2024-01-02 00:20
文章标签 创建 应用程序 odoo17

本文主要是介绍odoo17 | 创建一个新应用程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

本章的目的是为创建一个全新的Odoo模块奠定基础。 我们将从头开始,以使我们的模块被Odoo识别所需的最低限度。 在接下来的章节中,我们将逐步添加功能以构建一个真实的业务案例。

教程

假设我门需要在odoo上开发一个新app模块例如房地产广告模块。本节的目标是让Odoo识别我们的新模块,这将暂时是一个空壳。它将在应用程序中列出。
在这里插入图片描述

  • 首先需要在项目的根目录下新建一个custom_addons(名字可以更具自己的喜好命令)文件夹,用来存放我们接下开发的一些模块代码。odoo系统自带的模块代码都在根目录的addons文件夹下。虽然我们也可以把新开发的模块代码放在addons文件夹下,当时为了区分自己开发的和系统自带的模块我们最好还是新建一个文件夹来存放我们自己开发的模块。
  • 接下来修改odoo.config配置文件中的addons_path参数为 addons_path = addons,custom_addons
  • 然后在custom_addons文件夹下创建一个estate模块文件夹,以后用来放房地产广告模块的代码。
  • 一个模块必须至少包含 2 个文件:__manifest__.py(清单文件)和 __init__.py。 __init__.py文件现在可以保持为空,我们将在下一章中回到它。另一方面,__manifest__.py文件必须描述我们的模块,并且不能保持空。它唯一必需的字段是名称,但它通常包含更多信息。

__manifest__.py(清单)

清单文件用于将 python 包声明为 Odoo 模块 并指定模块元数据。

它是一个名为并包含单个 Python 的文件 字典,其中每个键指定模块元。manifest.py

{'name': "Real Estate",'version': '1.0','depends': ['base'],'author': "Author Name",'category': 'Category','description': """房地产广告模块""",# data files always loaded at installation'data': [#'views/mymodule_view.xml',],# data files containing optionally loaded demonstration data'demo': [#'demo/demo_data.xml',],
}

该文件应该只定义模块的名称和依赖项。 目前唯一需要的框架模块是 .manifest.py base。

可用的清单字段包括:

name (str,必填)
模块的人类可读名称

version (str)
此模块的版本应遵循语义版本控制规则

description (str)
模块的扩展说明,在 reStructuredText 中

author (str)
模块作者的姓名

website (str)
模块作者的网站 URL

license (str, defaults: LGPL-3)
模块的分发许可证。 可能的值:

  • GPL-2
  • GPL-2 or any later version
  • GPL-3
  • GPL-3 or any later version
  • AGPL-3
  • LGPL-3
  • Other OSI approved licence
  • OEEL-1(Odoo企业版许可证v1.0)
  • OPL-1(Odoo 专有许可证 v1.0)
  • Other proprietary

category (str, default: Uncategorized)
Odoo中的分类类别,模块的粗略业务领域。

尽管建议使用现有类别,但该字段是 自由格式和未知类别是即时创建的。类别 可以使用分隔符创建层次结构,例如 将创建一个类别,一个类别作为子类别,并将设置为模块的类别。/Foo / BarFooBarFooBar

depends (list(str))
Odoo模块必须在此之前加载,因为 模块使用他们创建的功能,或者因为它改变了他们 定义。

安装模块时,其所有依赖项都将在安装之前安装 它。同样,依赖项在加载模块之前加载。

注意
模块base 总是安装在任何Odoo实例中。但是,您仍然需要将其指定为依赖项,以确保在base更新时更新模块。

data (list(str))
必须始终使用 模块。模块根目录中的路径列表

demo (list(str))
仅在演示中安装或更新的数据文件列表 模式

auto_install (bool or list(str), default: False)
如果 ,此模块将自动安装,如果其所有 已安装依赖项。True

一般用于实现协同集成的“链接模块” 在两个其他独立的模块之间。

例如,依赖于 和 和 被设置 自。当两者都安装时,它 自动将CRM活动跟踪添加到销售订单中,而无需相互了解。sale_crmsalecrmauto_installsalecrmsalecrm

如果它是一个列表,它必须包含依赖项的子集。该模块将自动 一旦安装了子集中的所有依赖项,就会安装。其余的 依赖项也将自动安装。如果列表为空,则此模块将 无论其依赖项如何,始终自动安装,这些将作为 井。

external_dependencies (dict(key=list(str)))
包含 python 和/或二进制依赖项的字典。

对于 python 依赖项,必须为此定义密钥 应分配字典和要导入的 Python 模块列表 到它。python

对于二进制依赖项,必须为此定义密钥 应为其分配字典和二进制可执行文件名称列表。bin

如果未安装 python 模块,则不会安装该模块 或在主机中找不到二进制可执行文件 主机的 PATH 环境变量。

application (bool, default: False)
是否应将该模块视为一个成熟的应用程序 () 或者只是一个技术模块 (),它提供了一些 现有应用程序模块的额外功能。TrueFalse

assets (dict)
定义如何在各种资产包中加载所有静态文件。 有关如何操作的更多详细信息,请参阅资产页面 描述捆绑包。

installable (bool default: True)
用户是否应该能够从 Web UI 安装模块。

maintainer (str)
默认情况下,负责维护此模块的个人或实体 假设作者是维护者。

{pre_init, post_init, uninstall}_hook (str)
用于模块安装/卸载的钩子,其值应为 字符串表示在模块的 .init.py

-pre_init_hook将游标作为其唯一参数,此函数是 在模块安装之前执行。

-post_init_hook将游标和注册表作为其参数,这 函数在模块安装后立即执行。

-uninstall_hook将游标和注册表作为其参数,这 函数在模块卸载后执行。

仅当此模块需要设置/清理时,才应使用这些挂钩 通过 API 要么非常困难,要么是不可能的。

active (bool)
弃用。由auto_install取代。

重新启动Odoo

重新启动Odoo服务器并转到应用程序。 单击“更新应用程序列表”,
在这里插入图片描述
搜索estate模块,estate房地产广告模块出现了!如果它没有出现吗?也许尝试删除默认的“应用程序”过滤器。
在这里插入图片描述

  • **警告:**请记住启用开发人员模式,否则,您将不会看到“更新应用列表”按钮。

如果你想要将estate房地产模块变成一个应用程序app,只需要修改__manifest__.py清单文件中添加以下配置,重启服务后,再次点击更新应用程序列表即可。

'application': True,

使您的模块成为“应用程序”。

您甚至可以安装启用该模块!但显然它是一个空壳,所以不会出现菜单。

这篇关于odoo17 | 创建一个新应用程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/560891

相关文章

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

python如何创建等差数列

《python如何创建等差数列》:本文主要介绍python如何创建等差数列的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python创建等差数列例题运行代码回车输出结果总结python创建等差数列import numpy as np x=int(in

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho