Odoo 8方法解析顺序

时间:2016-03-30 17:25:52

标签: openerp 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,而module1又调用original。我怎么才能现在只调用原件(假设我不想要" 1"在某些情况下打印)?

欢呼并非常感谢所有帮助

1 个答案:

答案 0 :(得分:2)

Odoo设置层次结构,但适用普通的Python规则。

如果要从模块2调用原始方法,可以从原始模块中导入该特定类,小心地将self传递给它,因为您正在从类中调用该方法,而不是实例:

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"`