使用原型继承复制特征

来自Odoo大V社-odoo中文开发手册
跳转至: 导航搜索

我们之前使用的扩展模型的方法仅使用_inherit属性。 我们定义了一个继承了todo.task模型的类,并向它添加了一些功能。 类属性_name未设置; 隐藏的,它是todo.task。

但是,使用_name属性允许我们创建一个新的模型并从继承模型复制功能。 这里是一个例子:

from odoo import models
class TodoTask(models.Model):
_name = 'todo.task'
_inherit = 'mail.thread'

这通过将mail.thread模型中的特性复制到todo.task模型中来扩展它。 mail.thread模型实现了Odoo消息和跟随器功能,并且是可重复使用的,因此很容易将这些功能添加到任何模型中。

复制意味着继承的方法和字段也将在继承模型中可用。 对于字段,这意味着它们也将被创建并存储在目标模型的数据库表中。 原始(继承)和新(继承)模型的数据记录保持不相关。 只有定义是共享的。

稍后,我们将详细讨论如何使用这个来添加mail.thread及其社交网络功能到我们的模块。 实际上,当使用mixins时,我们很少从常规模型继承,因为这会导致相同数据结构的重复。

Odoo还提供了避免数据结构重复的委托继承机制,因此通常在从常规模型继承时是首选。 让我们更详细地看看它。

上一节:更多的模型继承机制
下一节:使用委托继承嵌入模型