Extending models
New models are defined through Python classes. Extending them is also done through Python classes, but with the help of an Odoo-specific inheritance mechanism.
To extend an existing model, we use a Python class with a _inherit
attribute. This identifies the model to be extended. The new class inherits all the features of the parent Odoo model, and we only need to declare the modifications we want to introduce.
In fact, Odoo models exist outside our particular Python module, in a central registry. This registry, can be accessed from model methods using self.env[<model name>]
. For example, to get a reference to the object representing the res.partner
model, we would write self.env['res.partner']
.
To modify an Odoo model, we get a reference to its registry class and then perform in-place changes on it. This means that these modifications will also be available everywhere else where this new model is used.
During the Odoo server startup, the module loading the sequence is...