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>
_inherits
(делегирование)? Просмотр наследования будет работать там. Примером могут служить модели Odoo product.template и product.product. - person CZoellner   schedule 29.06.2018