#python #python-3.x #odoo #odoo-14
#python #python-3.x #odoo #odoo-14
Вопрос:
Я пытаюсь сделать в этом древовидном представлении поля доступными только для чтения, но это представление унаследовано от hr.employee
, и мы используем <xpath>
, и я могу сделать обычные поля доступными только для чтения, за исключением ЗАГОЛОВКА и ПРИСВОЕНИЯ столбцам
Или можно ли отключить этот флажок «из коробки» в Odoo 14? Спасибо!!
Просмотр определения:
<record id="view_task_tree_rw" model="ir.ui.view">
<field name="name">project.task.tree.inherited</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_tree2"/>
<field name="arch" type="xml">
<xpath expr="//tree[1]/field[@name='name']" position="after">
<field name="status"/>
<field name="date_start" widget="date"/>
<field name="date_end" widget="date" />
<field name="billable"/>
<field name="utilization"/>
<field name="planned_hours"/>
</xpath>
<xpath expr="//field[@name='company_id']" position="replace"/>
<xpath expr="//field[@name='activity_ids']" position="replace"/>
<xpath expr="//field[@name='tag_ids']" position="replace"/>
<xpath expr="//field[@name='stage_id']" position="replace"/>
<xpath expr="//field[@name='project_id']" position="replace"/>
<xpath expr="//tree[1]/field[@name='name']" position="after">
<xpath expr="//field[@name='user_id']" position="move"/>
</xpath>
</field>
</record>
Скриншот:
Ответ №1:
в xpath
определении вы могли бы использовать position="attributes"
для переопределения существующих атрибутов поля унаследованного представления. итак, ваш код будет выглядеть следующим образом:
<xpath expr="//field[@name='TARGET FIELD NAME']" position="attributes">
<attribute name="readonly">1</attribute>
</xpath>
Ответ №2:
Метод, записываемый @kerbose, в порядке, но иногда, когда в модели много наследований, и вы не знаете, какое из них является последним, а какое-то поле перезаписывает ваше поле, вы можете просто использовать priority . Значение приоритета по умолчанию равно 16. Поэтому используйте более высокое значение, потому что, возможно, в будущем вы захотите загрузить что-то между вашим представлением и предыдущим представлением.
Пример:
<field name="priority">50</field>
Примерный вид:
<record id="view_task_tree_rw_inherit_something" model="ir.ui.view">
<field name="name">project.task.tree.inherited.inherit.something</field>
<field name="model">project.task</field>
<field name="priority">50</field>
<field name="inherit_id" ref="project.view_task_tree2"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='TARGET FIELD NAME']" position="attributes"
<attribute name="readonly">1</attribute>
</xpath>
</field>
</record>