We have seen the basic extension of models, called class inheritance in the official documentation. This is the most frequent use of inheritance, and it's easiest to think about it as in-place extension. You take a model and extend it. As you add new features, they are added to the existing model. A new model isn't created. We can also inherit from multiple parent models, setting a list of values to the _inherit
attribute. With this, we can make use of mixin classes. Mixin classes are models that implement generic features we can add to other models. They are not expected to be used directly, and are like a container of features ready to be added to other models.
If we also use the _name
attribute with a value different from the parent model, we get a new model reusing the features from the inherited one but with its own database table and data. The official documentation calls this prototype inheritance. Here you take a model and create a brand new one that...