继承版本8中的旧方法

时间:2015-07-24 19:24:32

标签: odoo

当我编写一个覆盖当前方法的自定义模块时,是否需要在同一版本的api中编写?

例如模块产品是用v7编写的,当我覆盖产品的方法时,是否需要在v7中,或者我可以在v8中执行此操作吗?

2 个答案:

答案 0 :(得分:2)

是的,你绝对可以在v7方法中覆盖到v8

from openerp import models, fields, api, _

class product_product(models.Model):
    _inherit= "product.product"
    _description = "Product"

@api.v7
def _product_code(self, cr, uid, ids, name, arg, context=None):
    res = {}
    if context is None:
        context = {}
    for p in self.browse(cr, uid, ids, context=context):
        res[p.id] = self._get_partner_code_name(cr, uid, [], p, context.get('partner_id', None), context=context)['code']
    return res 

我只是覆盖了Odoo 8.0的新API产品类中的v7 _product_code method

我希望我的回答对您有所帮助:)。

答案 1 :(得分:1)

您需要更新代码odoo引擎,它根据需要自行管理升级/降级机制。

from openerp import models, fields, api, _

class product_product(models.Model):
    _inherit= "product.product"
    _description = "Product"

    @api.model
    def create(self, vals):
        ### Add your code here
        return super(product_product, self).create(vals);

    @api.multi
    def write(self, vals):
        ### Add your code here
        return super(product_product, self).write(vals);

类似地,除了onchange方法之外,您可以覆盖旧版本的任何方法。在onchange方法中,您需要以旧模式提供定义。