Inheritance Odoo遗传和(缺乏)多态性

Inheritance Odoo遗传和(缺乏)多态性,inheritance,openerp,openerp-8,Inheritance,Openerp,Openerp 8,我想构造一个对象(objA),它在其存在过程中具有许多不同类型的状态(objB)。然而,每种不同类型的状态都是其自身的野兽,这取决于其类型(type1,type2,type3,…) 显然,Odoo/OpenERP不支持多态性,因此引入中间状态objB旨在掩盖不同类型的状态,希望objA可能有一个包含其“状态历史”的One2Many字段 现在,我被Odoo文档描述为传统vs委托的继承概念所困扰,不确定哪一个是传统vs委托。此外,如果这种类型的操作是可能的,那么所有属性是否都可以在objA的表单视图

我想构造一个对象(objA),它在其存在过程中具有许多不同类型的状态(objB)。然而,每种不同类型的状态都是其自身的野兽,这取决于其类型(type1type2type3,…)

显然,Odoo/OpenERP不支持多态性,因此引入中间状态objB旨在掩盖不同类型的状态,希望objA可能有一个包含其“状态历史”的One2Many字段

现在,我被Odoo文档描述为传统vs委托的继承概念所困扰,不确定哪一个是传统vs委托。此外,如果这种类型的操作是可能的,那么所有属性是否都可以在objA的表单视图中实现

我唯一的猜测如下:

class ObjA(models.Model):
    _name = 'obja'
    generic_attribute = fields.Char(string="Generic Attribute", default="Anything")
    status_history = fields.One2many('obja.status', 'obja.id', string="History")

class Status(models.Model):
    _name = 'obja.status'
    generic_status_attribute = fields.Date(string="Status start")
    _inherits = ['status.type1', 'status.type2', 'status.type3']

class Type1(models.Model):
    _name = 'status.type1'

class Type2(models.Model):
    _name = 'status.type3'

class Type3(models.Model):
    _name = 'status.type3'

我认为在odoo本身中可能有一个例子,它实现了您的需求
ir.ui.menu
可以采用不同类型(模型)的ir.actions,它们继承了
ir.actions.actions
。您可以在base/ir中找到这些类。