отключить редактируемые поля в древовидном представлении Odoo 14

#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>