Здесь я объясню очень редкое (недокументированное) и полезное наследование представлений Odoo XML, чтобы иметь возможность заменить все представление без переопределения данных представления записи.
Например, если вы хотите переопределить (плохопопрактиковаться) с содержимым представления website_sale.product
, вы можете сделать это (используя тот же xml-идентификатор записи другой записи)
<!-- Not Recommended for almost every case -->
<template id="website_sale.product" name="Product">
...
<!-- Reorganize the original view as needed -->
...
</template>
Это может привести к потере исходного кода и может привести к сбою, еслимодуль, который представляет изменения, удаляется, потому что изменения будут жить в исходном представлении записи и приводят к некоторым ошибкам.
Предлагаемый способ (редкий и не документированный) использует этот тип наследования:
<template id="recommended_products_ext" inherit_id="website_sale.recommended_products">
<xpath expr="." position="replace">
<t name="Alternative Products" t-name="website_sale.recommended_products">
...
<!-- Reorganize the original view as needed -->
...
</t>
</xpath>
</template>
Этот формат позволяет вводить переопределение исходных представлений по расширению без изменения вручную исходного кода унаследованного представления.Фактически формат: <t name"" t-name=""></t>
- это способ, которым Odoo хранит шаблоны qweb в БД, и я извлекаю из этого пользу, позволяя мне представить переопределение всего представления, одновременно играя с наследованием того же самого представления другими.
Имейте в виду, что это инструмент, который, возможно, нуждается в помощи от модуля зависит, и просмотрите приоритет, чтобы иметь возможность действовать как можно скорее, чтобы внести изменения, прежде чем наследование других представлений сможет использовать свою очередь.
Я считаю этот вопрос хорошим местом для обсуждения этого решения.Но не стесняйтесь оценить, если подать заявку на ваше дело
* Обновление * Пример суть:
https://gist.github.com/aek/d8a3588e1f8c63f96be242f4d6d75b09