Je veux hériter @classmethod
de class BaseModel(object)
Comment hériter ou @classmethod orverride dans Odoo
Comment hériter ou remplacer les @classmethod
dans notre module personnalisé?
Je veux hériter @classmethod
de class BaseModel(object)
Comment hériter ou @classmethod orverride dans Odoo
Comment hériter ou remplacer les @classmethod
dans notre module personnalisé?
Je viens de croiser aujourd'hui :)
Vous pouvez l'étendre dans deux façons. Cela dépend si vous avez vraiment besoin d'étendre BaseModel
ou si vous devez étendre une sous-classe spécifique de BaseModel
.
Sous classe
Pour toute sous-classe, vous pouvez hériter comme vous le feriez normalement:
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)
Prolongez BaseModel directement
Dans le cas de BaseModel
lui-même vous allez besoin de patch de singe:
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