如何在odoo中继承或覆盖@classmethod
How to inherit or orverride @classmethod in odoo
我想继承 class BaseModel(object)
的 @classmethod
如何继承或覆盖我们自定义模块中的@classmethod
?
我今天才 运行 :)
您可以通过多种方式扩展它。这取决于您是否真的需要扩展 BaseModel
或是否需要扩展 BaseModel
.
的特定子 class
子Class
对于任何子class,您可以像往常一样继承它:
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
我想继承 class BaseModel(object)
的 @classmethod
如何继承或覆盖我们自定义模块中的@classmethod
?
我今天才 运行 :)
您可以通过多种方式扩展它。这取决于您是否真的需要扩展 BaseModel
或是否需要扩展 BaseModel
.
子Class
对于任何子class,您可以像往常一样继承它:
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