Odoo模块开发教程1-模块继承第一讲

Odoo 的一个强大功能是无需直接修改底层对象就可以添加功能。这是通过其继承机制来实现的,采取在已有对象之上修改层来完成。这种修改可以在不同层上进行-模型层、视图层和业务逻辑层。我们创建新的模块来做出所需修改而无需在原有模块中直接修改。
上一篇文章中我们从零开始创建了一个新应用,本文中我们学习如何通过继承已有的核心应用或第三方模块来创建新的模块。实现以上本文将主要涵盖:
⚫ 原模型扩展,为已有模型添加功能
⚫ 修改数据记录来继承视图,添加功能或修改数据来修改其它模块创建的数据记录
⚫ 其它模型继承机制,如代理继承和 mixin 类
⚫ 继承 Python 方法来为应用业务逻辑添加功能
⚫ 继承 Web 控制器和模板来为网页添加功能

开发准备

本文要求可通过命令行来启动 Odoo 服务。代码将在第三章创建第一个 Odoo 应用的基础上进行修改。通过该文的学习现在我们已经有了 library_app 模块。本系列文章代码请参见 GitHub仓库。

学习项目-继承图书馆应用

在创建第一个 Odoo 应用中我们创建了一个图书应用的初始模块,可供查看图书目录。
现在我们要创建一个 library_member 模块,来对图书应用进行扩展以让图书会员可以借书。它继承 Book 模型,并添加一个图书是否可借的标记。该信息将在图书表单和图书目录页显示。
应添加图书会员主数据模型 Member,类似 Partner 来存储个人数据,如姓名、地址和email,还有一些特殊字段, 如图书会员卡号。最有效的方案是代理继承,自动创建图书会员记录并包含关联 Partner 记录。该方案使得所有的 Partner 字段在 Member 中可用,没有任何数据结构上的重复。
我们还要在借书表单中为会员提供消息和社交功能,包括计划活动组件来实现更好地协作。我们还要添加会员从图书馆中借书的功能,但暂不涉及。以下是当前所要修改内容的总结:
⚫ 图书
◼ 添加一个 Is Available? 字段。现在通过手动管理,以后会自动化
◼ 扩展 ISBN 验证逻辑来同时支持 10 位数的 ISBN
◼ 扩展图书目录页来分辨不可借阅图书并允许用户过滤出可借图书
⚫ 会员
◼ 添加一个新模型来存储姓名、卡号和 Email、地址一类的联系信息
◼ 添加社交讨论和计划活动功能
首先在 library_app 同级目录创建一个 library_member 目录来作为扩展模块,并在其中添加两个文件,一个__init__.py 空文件和一个包含如下内容的__manifest__.py 文件:
{
'name': 'Library Members',
'description': 'Manage people who will be able to borrow books.',
'author': 'www.oscg.cn',
'depends': ['library_app'],
'application': False,
}

更多教程:https://www.erpdaxue.cn/odoo/odoo-teach/

posted @ 2020-05-24 21:36  十年老猿  阅读(455)  评论(0编辑  收藏  举报