odoo視圖繼承


odoo視圖繼承

簡介繼承

  • 在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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM