在ODOO中可以继承扩展类吗?

0 投票
1 回答
2132 浏览
提问于 2025-04-30 22:23

addons/delivery/sale.py 文件中,我们有一个类,它在第39行继承了 sale.order 类:

class sale_order(osv.Model):
    _inherit = 'sale.order'

这是一个扩展类(没有 _name

有没有办法从这个类继承,并重写它的某个方法呢?

暂无标签

1 个回答

2

@Paulo Farinha Silva:你给的代码片段已经是扩展类的一种方式了,你可以重写(over-ride)或者重载(overload)任何方法,并且可以选择调用父类的方法,也可以不调用。下面是一个示例代码片段:

#Original definition v8 addons/delivery/sale.py  line no 36 :
class sale_order(osv.Model):
    _name = "sale.order"
#Example method on sale order calss line #601
def action_wait(self, cr, uid, ids, context=None):

这是继承的,前面提到的方法已经被重写了,代码看起来是这样的:

#Original definition v8 /addons/sale_stock/sale_stock.py  line no 30 :
class sale_order(osv.Model):
    _name = "sale.order"

 #this is method originally defined in parent class and being over-ride here,
def action_wait(self, cr, uid, ids, context=None):
    #Your Code goes here
    res = super(sale_order, self).action_wait(cr, uid, ids, context=context)
    #Your Code goes here
    return res

通过这种方式,你可以重写方法,并且可以同时操作所有模型的方法和字段。

祝好

撰写回答