前言
前面我們詳細講解了odoo ORM中fields中的常見屬性的使用,根據不同的屬性可以對字段進行不同的限制操作,比如readonly只讀,store是否存儲到數據庫。今天我們繼續研究ORM中的關係映射有哪些。
class odoo.fields. Integer
(常用)
- Integer會映射成int類型數據。
- 無其它特別的屬性用法。
class odoo.fields. Binary
- 封裝存儲二進制數據
- 特有屬性
- class odoo.fields.
Binary
attachment default爲True,不會存儲到數據庫中,如果爲False則會在數據庫中創建指定的字段。
- class odoo.fields.
class odoo.fields. Html
- xml中的表現是在頁面中生成一個富文本編輯器。
- 特有屬性(沒做過具體研究)
- sanitize。默認值爲True。
- sanitize_tags。默認值爲True。
- sanitize_attributes。默認爲True。
- sanitize_style。默認值爲False。
- strip_style。默認值爲False。
- strip_classes。默認值爲False。
class odoo.fields. Image
- 封裝圖像,是Binary類型的擴展。
- 特有屬性
- max_width。圖像的最大寬度。
- max_height。圖像的最大高度。
- verify_resolution。是否驗證分辨率,使其不超過它最大的分辨率限制。
class odoo.fields. Monetary
(常用)
-
float的擴展類型,經常使用在價格相關的字段上,配合外鍵
res_currency
一起使用。 -
特有屬性
- currency_field。需要配置外鍵字段res_currency一起使用
# currency_field是一個Str類型的數據
fandx_price = fields.Monetary(string='fandx_price', currency_field='currency_id', required=True, readonly=True)
# Many2one for res.currency
currency_id = fields.Many2one('res.currency', 'Currency', required=True, readonly=True)
class odoo.fields. Selection
(常用)
-
封裝多選字段,一般最常用的在封裝state狀態字段的時候。
-
特有屬性
- selection。用來定義可選的內容
- selection_add。用於繼承之前定義好的selection進行擴展可選內容。
- ondelete。在數據刪除的時候會觸發,這裏傳的是一個字典類型數據,如果指定內容被刪除,那麼會重新進行數據的映射
# 所有狀態爲未審覈的字段,如果0被刪除了,那麼這部分會自動變成未知狀態。 fandx_state = fields.Selection(selection=[("0", "未審覈"),("1", "已審覈")], ondelete={"0": "未知狀態"})
class odoo.fields. Text
- 和Char類型相似,但是可以存儲更多的字符容量。
- 特有屬性
- translate。是否翻譯,開啓翻譯會自動翻譯成當前配置的語言。
class odoo.fields. Date | DateTime
(常用)
- Date和Datetime屬性也是非常常用的映射字段,主要用來表示時間。
- Odoo中所有的時間處理用的也是python自帶的datetime的方法,所以這裏不去細講解。
- 特有屬性
- start_of。設置開始時間
- end_of。設置結束時間
- add。添加指定時間
- subtract。減去指定時間