2017-08-24 102 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