Наследование - m3dbedb/odoo GitHub Wiki

В официальной документации базовое расширение моделей называется классовым наследованием. Это наиболее часто используемое наследования, и проще всего думать об этом как о местном расширении. Вы берете модель и расширяете её. При добавлении новых функций они добавляются в существующую модель. Новая модель не создаётся. Мы также можем наследовать от нескольких родительских моделей, установив список значений в атрибуте _inherit. При этом мы можем использовать классы - примеси. Классы Mixin-это модели, реализующие универсальные особенности, которые мы можем добавить к другим моделям. Они не должны использоваться напрямую, а как набор характеристик, готовый для добавления в другие модели.

Если мы используем атрибут _name со значением, отличным от родительской модели, мы получаем новую модель использующую объекты наследуемой, но с собственной таблицей БД и данными. Это наследование называется в документации наследованием прототипа. Вы берете модель и создаёте новую, которая копирует старую. При добавлении новых функций они добавляются в новую модель. Существующая модель не меняется.

Существует также метод наследования делегированием с использованием атрибута _inherits. Это позволяет модели содержать другие модели прозрачным способом для наблюдателя, в то время как, за кулисами, каждая модель обрабатывает собственные данные. Берешь модель и расширяешь ее возможности. При добавлении новых функций они добавляются в новую модель. Существующий модуль не изменяется. Записи в новой модели имеют ссылки на запись в оригинальной, и поля первоначальной модели подвергнуты действию и могут быть использованы сразу в новой модели.