Odoo 8 方法解析顺序

Odoo 8 method resolution order

我对理解 odoo 中的继承有疑问。 考虑模块 1

中的以下代码
`class pos_order(models.Model):
    _inherit = 'pos.order'
    def create_from_ui(self, cr, uid, orders, context=None):
        super(models.Model, self).create_from_ui(cr, uid, orders, context=context)
        print "1"`

与模块 2 相同,只是打印 2。首先安装模块 1,然后安装模块 2。如您所见,pos_order 扩展了自定义 create_from_ui 函数。如果现在调用 create_from_ui,则调用 module2 order,后者又调用 module1 order,后者又调用 original。我现在怎么能只调用原件(可以说我不想在某些情况下打印“1”)?

干杯,非常感谢所有帮助

Odoo 设置层次结构,然后应用正常的 Python 规则。

如果您想从模块 2 调用原始方法,您可以从原始模块导入特定的 class,小心地将 self 传递给它,因为您正在调用来自 class 的方法,不是实例:

from openerp.addons.point_of_sale.point_of_sale import pos_order as original_pos_order

class pos_order(models.Model):
  _inherit = 'pos.order'
  def create_from_ui(self, cr, uid, orders, context=None):
    original_pos_order.create_from_ui(self, cr, uid, orders, context=context)
    print "1"`