前言
前面我們詳細講解了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。減去指定時間