当我编写一个覆盖当前方法的自定义模块时,是否需要在同一版本的api中编写?
例如模块产品是用v7编写的,当我覆盖产品的方法时,是否需要在v7中,或者我可以在v8中执行此操作吗?
答案 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方法中,您需要以旧模式提供定义。