继承版本 8 中的旧方法

Inheriting old methods in version 8

当我编写覆盖当前方法的自定义模块时,是否需要使用相同版本的 api 编写?

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

是的,您绝对可以将 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 

我只是在我的新 API 产品 class 中为 Odoo 8.0 覆盖 v7 _product_code method

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

您只需要更新代码 odoo 引擎,它根据需要自行管理 upgrade/downgrade 机制。

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 方法中,您需要以旧模式提供定义。