原文:Odoo 18 官方开发教程“Server framework 101”第 2 章。本文尽量保留原文结构、代码、练习与图片,仅进行中文翻译,并在文末增加“老赵解读”。
第 2 章:新应用程序
本章的目的是为创建全新的 Odoo 模块奠定基础。
我们将从头开始,从 Odoo 识别我们的模块所需的最低限度开始。
在接下来的章节中,我们将逐步添加功能来构建现实的业务案例。
房地产广告模块
我们的新模块将涵盖一个非常具体的业务领域,因此不包含在
标准模块集:房地产。值得注意的是,之前
开发一个新模块时,最好验证 Odoo 是否已经提供了一种方法
回答具体的业务案例。
以下是包含一些广告的主列表视图的概述:
表单视图的顶部区域总结了房产的重要信息,例如名称、
房产类型、邮政编码等。第一个选项卡包含描述信息
房产:卧室、起居区、车库、花园……
第二个选项卡列出了房产的报价。我们可以在这里看到潜在买家可以
报价高于或低于预期售价。由卖家决定是否接受报价。
这是一个显示该模块工作流程的快速视频。
希望这个视频很快就会被录制:-)
准备附加模块目录
参考:与该主题相关的文档可以在以下位置找到
模块清单。
说明
目标:本节的目标是让 Odoo 识别我们的新模块,这将
暂时是个空壳。它将在应用程序中列出:
创建模块的第一步是创建其目录。在 tutorials 中
目录,添加一个新目录 estate。
模块必须至少包含 2 个文件:__manifest__.py 文件和 __init__.py 文件。
__init__.py 文件现在可以保持为空,我们将在下一章中讨论它。
另一方面,__manifest__.py 文件必须描述我们的模块并且不能保留为空。
它唯一需要的字段是 name,但它通常包含更多信息。
看看
CRM 模块清单文件
举个例子。除了提供模块的描述(name、category、
summary、website…),它列出了其依赖项(depends)。依赖性意味着
Odoo 框架将确保在安装我们的模块之前安装这些模块。此外,如果
卸载这些依赖项之一,然后我们的模块和 任何其他依赖于它的东西也将
被卸载。想想你最喜欢的 Linux 发行版包管理器
(apt、dnf、pacman…):Odoo 的工作方式相同。
练习
创建所需的附加模块文件。
创建以下文件夹和文件:
/home/$USER/src/tutorials/estate/__init__.py/home/$USER/src/tutorials/estate/__manifest__.py
__manifest__.py文件应该只定义模块的名称和依赖项。
目前唯一必需的框架模块是base。
重新启动 Odoo 服务器并转到“应用程序”。单击“更新应用程序列表”,搜索 estate 并…
tadaaa,你的模块出现了!没有出现吗?也许尝试删除默认的“应用程序”过滤器;-)
警告
请记住启用 开发者模式,如前面所述
章。你不会看到 更新应用程序列表 按钮,否则。练习
让你的模块成为一个“应用程序”。
将适当的配置项添加到您的
__manifest__.py中,以便该模块在“应用程序”时出现
过滤器已打开。
您甚至可以安装该模块!但显然它是一个空壳,所以不会出现任何菜单。
一切都好吗?如果是,那么让我们创建我们的第一个模型!
老赵解读
这一章看似只创建了两个文件,实际上是在建立 Odoo 模块的最小边界。__manifest__.py 不只是模块说明书,也是依赖安装、升级和卸载传播的入口;依赖关系一旦写错,后续所有功能都会建立在不稳定的地基上。
实际开发时,我建议先让空模块能够被识别和安装,再逐步加入模型、权限和视图。每增加一层就升级并验证一次,比一次性堆完所有文件后再排错更高效。