简介继承

  • 在odoo里可以通过继承的方式来改写已经存在的view
  • 对比view的定义视图定义中写法多了inherit_id
  • inherit_id指向要改写的view

    <field name="inherit_id" ref="id_category_list"/>

在arch里用xpath定位改写的元素

<!-- 改写 ibuilding list 列表视图 -->
<record id="building_list_view" model="ir.ui.view">
    <field name="name">building.list.view</field>
    <field name="model">ibuilding.list</field>
    <field name="inherit_id" ref="building_list"/>
    <field name="arch" type="xml">
        <!-- 找到ids字段,在其后添加idea_id字段 -->
        <xpath expr="//field[@name='ids']" position="after">
          <field name="idea_id" string="Number of ideas"/>
        </xpath>
        <!-- 找到 upload 字段,在其后添加idea_ids字段 -->
        <xpath expr="//field[@name='upload']" position="replace">
          <field name="download" string="下载一个文件"/>
        </xpath>
    </field>
</record>
  • 注意找到的元素必须是一个,如果定位出多个元素或者是空,都会报错。
  • expr Xpath表达式用来选择父视图中的某个元素,如果没找到或找到多个元素会抛出一个异常

position定位有如下选择

  • inside 在内部结尾插入元素
  • replace 替换元素
  • before 在之前插入元素
  • after 在其后插入元素
  • attributes 修改xml的属性

当仅匹配一个field时,erpr表达式可以简化如下

<xpath expr="//field[@name='upload']" position="replace">
    <field name="download" />
</xpath>

<field name="upload" position="replace">
    <field name="download" />
</field>

玄机
35 声望12 粉丝

希望来这里认识更多志同道合的朋友,大家一起交流学习!


引用和评论

0 条评论