如何在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