摘要:
继承 Python 方法 Python 方法中编写的业务逻辑也可以被继承。 Odoo 借用了 Python 已有的父类行为的对象继承机制。作为一个实际的例子,我们将继承图书 ISBN 验证逻辑。在图书应用中仅能验证 13 位的ISBN,但老一些的图书可能只有 10 位数的 ISBN。我们将继承_ch 阅读全文
摘要:
使用 mixin 类继承模型 原型继承主要用于支持 mixin 类。 mixin 是基于 models.Abstract 的抽象的模型(而不是models.Model),它在数据库中没有实际的体现,而是提供功能供其它模型复用(混合 mixed in)。 Odoo 插件提供多种 mixin,最常的两种 阅读全文
摘要:
使用代理继承内嵌模型 使用代理继承无需复制数据即可在数据库中复用数据结构,这通过将一个模型嵌入另一个来实现。 UML 中这种称作组合(composition)关系:父类无需子类即可存在,而子类必须要有父类才能存在。比如,对于内核 User 模型,每条记录包含一条 Partner 记录,因此包含 Pa 阅读全文
摘要:
其它模型继承机制 前面我们介绍了模型的基本继承,在官方文档中称为经典继承。这是最常用的继承方式,最容易想到的就是 in-place 继承。获取模型并对其继承。添加的新功能会自动添加到已有模型中,而不会创建新模型。可以为_inherit 属性传入多个值来继承多个父模型。大多数情况下这通过 mixin 阅读全文
摘要:
原模型继承 第一步我们来为 Book 模型添加 is_available 布尔型字段。这里使用经典的 in-place 模型继承。该字段值可通过图书借出和归还记录自动计算,但现在我们先使用普通字段。要继承已有模型,需要在 Python 类中添加一个_inherit 属性来标明所继承的模型。新类继承父 阅读全文
摘要:
Odoo 的一个强大功能是无需直接修改底层对象就可以添加功能。这是通过其继承机制来实现的,采取在已有对象之上修改层来完成。这种修改可以在不同层上进行-模型层、视图层和业务逻辑层。我们创建新的模块来做出所需修改而无需在原有模块中直接修改。上一篇文章中我们从零开始创建了一个新应用,本文中我们学习如何通过 阅读全文
摘要:
网页和控制器 Odoo 还提供了一个 web 开发框架,可用于开发与后台应用深度集成的功能。第一步我们来创建一个显示有效图书列表的简单网页。在请求 http:///library/books 页面时会进行响应,所以/library/books 是用于实施的 URL。这里我们简短地了解下 Odoo 网 阅读全文
摘要:
业务逻辑层 业务逻辑层编写应用的业务规则,如验证和自动计算。现在我们来为按钮添加逻辑,通过在模型Python 类中编写方法来实现。 添加业务逻辑 上文中我们在 Book 表单中添加了一个按钮,用于检查 ISBN 是否有效。现代 ISBN 包含 13位数字,最后一位是由前 12 位计算所得的检查位。我 阅读全文
摘要:
完整表单视图 此时 library.book 的表单视图代码如下: <form string="Book"><header><button name="button_check_isbn" type="object"string="Check ISBN" /></header><sheet><gro 阅读全文
摘要:
业务文件表单视图 上面的部分创建了一个基础表单视图,还可以做一些改进。对于文件模型, Odoo 有一个模拟纸张的展示样式,表单包含两个元素: 来包含操作按钮和来包含数据字段。可以修改上一部分的基础 定义为: <form string="Book"><header><!-- 此处添加按钮 --></h 阅读全文