轉載請注明原文地址:https://www.cnblogs.com/ygj0930/p/10826037.html
一:XML文件中定義記錄
XML中定義記錄:
每個<record>元素有兩個基本屬性id和model,並且包含為每列分配值的<field>元素。如前所述,id屬性對應於記錄的外部標識符,模型屬性對應於要寫入記錄的目標模型。
對於記錄:
<record id="x" model="y">
數據記錄加載時,實際上對模型y執行了create或update操作︰ 如果記錄x不存在,則創建它; 否則,更新原來對應的值。
noupdate:重復數據加載時,將重寫上次運行中加載的記錄。 這意味着升級一個模塊將覆蓋在數據庫內可能已經進行的任何手動更改。此重新導入行為是默認值,但可以更改,以便在升級模塊時,某些數據文件記錄保持不變。 這是通過<data>元素的noupdate =“1”屬性完成的。 這些記錄將在安裝addon模塊時創建,但在后續模塊升級中不會對其進行任何操作。
設置字段值的幾種方式如下:
1:<record>元素定義數據記錄並包含<field>元素以設置每個字段的值,field元素的name屬性標識要寫入的字段,要寫入的值是元素內容:字段的開始和結束標記之間的文本。
2:定義字段值的更精細的替代方法是eval屬性:它評估一個Python表達式並將結果值分配給字段。
<field name="date_deadline" eval="(datetime.now() + timedelta(-1)).strftime('%Y-%m-%d')" />
3:<field>元素還有一個ref屬性,用於使用外部標識符設置many-to-one等關聯字段的值。
<field name="user_id" ref="base.user_demo" />
二:XML中觸發函數
可以通過<function>元素,在data目錄下xml文件加載過程中執行方法。
<function model="數據模型" name="數據模型中的方法" eval="參數" />
另一方式是觸發工作流:
<workflow model="模型" ref="工作流實例" action="工作流信號:觸發工作流" />