2017-08-24 93 views
0

我要继承的class BaseModel(object)如何继承或odoo

@classmethod如何继承或覆盖我们的自定义模块中的@classmethod orverride @classmethod?

回答

1

我今天刚碰到这个:)

你可以用几种方法扩展它。这取决于你是否真的需要扩展BaseModel或者如果你需要扩展一个特定的子类BaseModel

子类

对于任何子类可以继承它,你通常会:

from odoo import api, fields, models 

class User(models.Model): 
    _inherit = 'res.users' 

    @classmethod 
    def check(cls, db, uid, passwd): 
     return super(User, cls).check(db, uid, passwd) 

扩展BaseModel直接

BaseModel案件本身,你会需要猴子补丁:

from odoo import models 

def my_build_model(cls, pool, cr): 
    # Make any changes I would like... 

    # This the way of calling super(...) for a monkey-patch 
    return models.BaseModel._build_model(pool, cr) 

models.BaseModel._build_model = my_build_model