Odoo позволяет легко расширять модели с помощью поля _inherit
. Таким образом, общий код и поля базовой модели доступны в расширяющих моделях.
У меня вопрос: могу ли я структурировать свои xml-файлы (например, виды поиска, представления форм и т. Д.) Расширяющих моделей, чтобы также повторно использовать общий xml-код базовых моделей?
Я прочитал, что механизм включения шаблона (с использованием t-call
) работает только для шаблонов QWeb, но не для общих представлений XML (см. Шаблоны включения ).
И наследование представлений с использованием inherit_id
, как я понимаю, только расширяет существующее представление для данной модели. Однако это не позволяет включать части существующих представлений для создания нового.
Значит ли это, что мне нужно скопировать общий код XML для полей базовой модели во все представления, расширяющие эту модель?
Пример:
Модель наследования
class Base(models.Model):
_name = 'bla.base'
common1 = fields.Text()
common2 = fields.Text()
class ExtA(models.Model):
_name = 'bla.exta'
_inherit = ['bla.base']
field_x = fields.Integer()
class ExtB(models.Model):
_name = 'bla.extb'
_inherit = ['bla.base']
field_y = fields.Integer()
Просмотры
<record model="ir.ui.view" id="exta_search">
<field name="name">exta.search</field>
<field name="model">bla.exta</field>
<field name="arch" type="xml">
<search>
<field name="field_x"/>
<!-- Also include xml to search in base model -->
</search>
</field>
</record>
<record model="ir.ui.view" id="extb_search">
<field name="name">extb.search</field>
<field name="model">bla.extb</field>
<field name="arch" type="xml">
<search>
<field name="field_y"/>
<!-- Also include xml to search in base model -->
</search>
</field>
</record>