昨天說完最基本的model,今天先來簡單了解一下,model底下的東西有甚麼意思吧:
from odoo import models, fields
class LibraryBook(models.Model):
# ...
short_name = fields.Char('Short Title')
notes = fields.Text('Internal Notes')
state = fields.Selection(
[('draft', 'Not Available'),
('available', 'Available'),
('lost', 'Lost')],
'State')
description = fields.Html('Description')
cover = fields.Binary('Book Cover')
out_of_print = fields.Boolean('Out of Print?')
date_release = fields.Date('Release Date')
date_updated = fields.Datetime('Last Updated')
pages = fields.Integer('Number of Pages')
reader_rating = fields.Float(
'Reader Average Rating',
digits=(14, 4), # Optional precision (total, decimals),
)
Model Field 類型
+ Boolean:布林值,True 或 False。
+ Char:單行文字。
+ Float:浮點數。
+ Integer:整數。
+ Binary:二進位檔案,如圖片、附件。
+ Html:存儲 HTML 格式的多行文字。
+ Date:類似 Python 的 Date,格式為 YYYY-MM-DD。
+ Datetime:類似 Python 的 Datetime,格式為 YYYY-MM-DD HH:MM:SS。
+ Selection:下拉選單,如範例中的性別(gender),選項可以自定義。
+ Monetary:貨幣欄位,可以根據貨幣設定顯示符號。
+ Text:多行文字。
+ Many2one:多對一關聯,例如生活中的圖書館,通常會以 _id 為結尾,表示多本書對應到一間圖書館。
+ One2many:一對多關聯,例如圖書館中一間出版社跟書,通常以 _ids 為結尾,表示一間出版社可以出多本書。
+ Many2many:多對多關聯,例如作者跟書(teacher_ids),命名方式與 One2many 相同,以 _ids 結尾, 表示多個作者對應到多本書。
Field 常用參數 (宣告Field時可以使用參數來控制屬性):
+ string:用戶在 Odoo 上看到的欄位名稱,如果未設定,則使用宣告的名稱。
+ help:描述欄位用途,開發者在開發者模式下可以看到,幫助使用者了解欄位。
+ invisible:布林值,控制欄位在 Odoo 上是否隱藏,預設為 False。
+ readonly:布林值,指定欄位是否只能讀取,設為 True 時表示無法寫入或修改。
+ required:布林值,指定欄位是否必填。
+ index:是否為欄位增加索引,預設為 False。
+ default:為欄位設定預設值。
+ states:通過字典方式控制在 UI 上顯示的 readonly、required 和 invisible 三個屬性。
+ groups:為欄位指定存取權限群組,當使用者不屬於允許的群組時,該欄位將不可見。
+ copy:在複製整份資料時,此欄位的值是否一併複製,大多數欄位預設為 True,但 One2many 欄位和計算欄 位預設為 False。
+ store:指定是否將欄位的值存儲在資料庫表中,預設為 True,只有計算欄位的 store 參數為 False。
+ compute:指定方法來計算欄位的值,具有此參數時,readonly=True,store=False,如範例中的 avg_score,透過 _compute_total 方法計算出該欄位的值,該值本身不會存儲在資料庫中,除非設定 store=True。
+ related:用於關聯其他資料,如範例中的 school_city,引用了 school_id 底下的 city 值。
+ company_dependent:根據不同的公司存取不同的值,例如收款帳戶。
今天簡單介紹了 Model Field 類型 , 明天我們來介紹 @api 種類跟介紹。