Odoo字段類型詳解


轉載請注明原文地址:https://www.cnblogs.com/ygj0930/p/10826099.html

 

一:基本字段類型

Binary:二進制類型,用於保存圖片、視頻、文件、附件等,在視圖層顯示為一個文件上傳按鈕。【Odoo底層對該類型字段的容量作了限制,最多能容納20M內容】

Char:字符型,size屬性定義字符串長度。

Boolean:布爾型

Float:浮點型,如 rate = fields.float('Relative Change rate',digits=(12,6)), digits定義數字總長和小數部分的位數

Integer:整型

Date:短日期,年月日,在view層以日歷選擇框顯示。

Datetime:時間戳。

Text:文本型,多用於多行文本框,可以用widget屬性為它添加樣式。

Html:與text類似,用於多行文本編輯,不過自帶編輯器樣式,並且會把內容以html解析。

Selection:下拉列表,枚舉類型。

 

 二:關聯字段類型

one2one: 一對一關系。

格式為:fields.one2one(關聯對象Name, 字段顯示名, ... )。在V5.0以后的版本中不建議使用,而是用many2one替代

 

many2one: 多對一關系,格式為:fields.many2one(關聯對象Name, 字段顯示名, ... )。可選參數有:ondelete,可選值為"cascade"和"null",缺省值為"null",表示one端的record被刪除后,many端的record是否級聯刪除。

參數列表:
comodel_name(string) -- 目標模型名稱,除非是關聯字段否則該參數必選
domain -- 可選,用於在客戶端篩選數據的domain表達式
context -- 可選,用於在客戶端處理時使用
ondelete -- 當所引用的數據被刪除時采取的操作,取值:'set null', 'restrict', 'cascade'
auto_join -- 在搜索該字段時是否自動生成JOIN條件,默認False
delegate -- 設置為True時可以通過當前model訪問目標model的字段,與_inherits功能相同

 

one2many: 一對多關系,格式為:fields.one2many(關聯對象Name, 關聯字段, 字段顯示名, ... ),例:'address'=fields.one2many('res.partner.address', 'partner_id', 'Contacts')。

參數列表:
comodel_name -- 目標模型名稱,
inverse_name -- 在comodel_name 中對應的Many2one字段
domain -- 可選,用於在客戶端篩選數據的domain表達式
context -- 可選,用於在客戶端處理時使用
auto_join -- 在搜索該字段時是否自動生成JOIN條件,默認False
limit(integer) -- 可選,在讀取時限制數量

 

many2many: 多對多關系。

comodel_name -- 目標模型名稱,除非是關聯字段否則該參數必選
relation -- 關聯的model在數據庫存儲的表名,默認采用comodel_name獲取數據
column1 -- 與relation表記錄相關聯的列名
column2 --與relation表記錄相關聯的列名
domain -- 用於在客戶端篩選數據的domain表達式
context -- 用於在客戶端處理時使用
limit(integer) --在讀取時限制數量

例如:'category_id'=fields.many2many('res.partner.category','res_partner_category_rel','partner_id','category_id','Categories')

表示以多對多關系關聯到對象res.partner.category,關聯表為'res_partner_category_rel',關聯字段為 'partner_id'和'category_id'。當定義上述字段時,OpenERP會自動創建關聯表為 'res_partner_category_rel',它含有關聯字段'partner_id'和'category_id'。

 

三:引用類型

1:related字段

字段=fields.類型(related="某個字段.類字段",store=true/false)

related字段可以簡記為“帶出字段”,由當前模型的某個關聯類型字段的某個字段帶出值。

 

2:reference字段

reference是比related更高級的引用字段,可以指定該字段引用那些模型范圍內的模型的哪些字段的值,范圍更廣。

 

四:Odoo保留字段

  • name(Char) -- _rec_name的默認值,在需要用來展示的時候使用
  • active(Boolean) -- 設置記錄的全局可見性,當值為False時通過search和list是獲取不到的
  • sequence(Integer) -- 可修改的排序,可以在列表視圖里通過拖拽進行排序
  • state(Selection) -- 對象的生命周期階段,通過fileds的states屬性使用
  • parent_id(Many2one) -- 用來對樹形結構的記錄排序,並激活domain表達式的child_of運算符
  • parent_left,parent_right -- 與 _parent_store結合使用,提供更好的樹形結構數據讀取

 

五:自動化屬性

在模塊安裝后,模塊中的類會自動添加一些屬性,這些屬性是odoo自動化添加與修改的,可以在odoo調試模式下,點擊一個model進行查看。如:

 

自動化屬性主要有:

對應的數據庫表中也會自動生成這些字段:

如果不想為model自動添加這些屬性,可以在類中通過:

來關閉自動化屬性。

 

六:Compute字段

compute字段不是一種字段類型,而是指某個字段的值是計算出來的。

一個字段的值,可以通過一個函數來動態計算出來。定義格式如下:

字段名=fields.類型(compute="函數名",store=True/false) #store定義了該動態改變的字段值是否保存到數據庫表中

@api.depends(依賴的字段值)#depend的字段值一旦發生變化,就會觸發該函數,從而更新compute字段值。
def 函數(self):
    self.字段=計算字段值

 


免責聲明!

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



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