星輝科技Odoo模塊開發教程8-導入導出數據定義記錄

在 XML 中定義記錄

在 XML 文件中,每個元素有兩個基本屬性: id 和 model,幷包含爲對應列設置的值。 id 屬性對應記錄外部標識符, model 對應目標模型。 元素有幾種分配值的方法,下
面一起來看看

直接爲字段設置值

元素的 name 屬性標識要寫入的字段。寫入的值是元素內容: 字段開、閉標籤之間的文本。對於 date 和 datetime,帶有返回 date 或 datetime 對象表達式的 eval 屬性可進行設
置。 返回的” YYYY-mm-dd”和” YYYY-mm-dd HH:MM:SS”字符串會進行轉化。對於布爾字段,” 0″ and “False”都會轉換成 False,而任意非空值都會轉換成 True。
“ 注意: Odoo 10 的修改
Odoo 10 中改進了從數據文件中讀取布爾值 False 的方式。在老版本中,包含” 0″ and“False”在內的非空值都會轉換成 True,直至 Odoo 9,布爾值仍需使用 eval 屬性進行設置,如 eval=” False”。 ”

通過表達式設置值

設置字段值更復雜的方式是通過 eval 屬性,它會運行 Python 表達式並將結果分配給字段。
表達式通過 Python 內置的以及一些其它可創建表達式標識符的上下文求值。
可使用如下 Python 模塊來處理日期: time, datetime, timedelta 和 relativedelta。通過它們可以計算日期值,在演示和測試數據經常會用到,以讓日期和模塊安裝日期較近。關於 Python模塊更多這類知識,請參考官方文檔。比如,把值設爲前一天,可使用如下代碼:
<field name="date_published" eval="(datetime.now() + timedelta(-1))" />
求值上下文還可使用 ref()函數,用於將外部標識符轉換爲對應的數據庫 ID。這可用於爲關聯字段設置值。比如,可以使用它爲 publisher_id 設置值:

<field name="publisher_id" eval="ref('res_partner_packt')" />

在 many-to-one 關聯字段上設置值

對於 many-to-one 關聯字段,要寫入的是關聯記錄的數據庫 ID。在 XML 文件中,我們一般會知道記錄的 XML ID,然後就需要把它轉換成實際的數據庫 ID
一種方式是像前文那樣使用帶有 ref()函數的 eval 屬性。更簡單的替代方式是使用在元素中可用的 ref 屬性,使用它設置 publisher_id many-to-one 字段的值,我們可以這麼寫:

<field name="publisher_id" ref="res_partner_packt" />

更多教程:https://www.erpdaxue.cn/odoo/odoo-teach/odoo12-teach/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章