1

我在理解 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”)?

干杯,非常感谢所有的帮助

4

1 回答 1

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"`
于 2016-03-30T18:10:03.250 回答