2015-07-24 1 views
3

Когда я пишу настраиваемый модуль, который переопределяет текущие методы, нужно ли это писать в той же версии api?Наследование старых методов в версии 8

Например, продукт модуля написан на v7, когда я переопределяю методы продукта, это должно быть в v7 или я могу сделать это в v8?

ответ

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 вам нужно предоставить определение в старом шаблоне.

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 

Я просто переопределить v7 _product_code method в моем новом классе API продукта для Odoo 8.0.

Я надеюсь, что мой ответ может полезно для вас :)

+1

Единственный случай, когда вы не можете сделать это, - это 'onchange', где вы не можете смешивать новый API и старый API. –

+0

Это означает, что мой метод не работает для изменения права вызова .. ?? –