星輝Odoo模型開發教程4-常用欄位屬性

星輝資訊科技發表於2020-11-24

欄位還有一些其它屬性供我們定義其行為。以下是常用的屬性,通常都作為關鍵字引數:
⚫ string 是欄位的預設標籤,在使用者介面中使用。除 Selection 和關聯欄位外,它都是第一個位置引數,所以大多數情況下它用作關鍵字引數。如未傳入,將由欄位名自動生成。
⚫ default 設定欄位預設值。可以是具體值(如 active 欄位中的 default=True),或是可呼叫引用,有名函式或匿名函式均可。
⚫ help 提供 UI 中滑鼠懸停欄位向使用者顯示的提示文字。
⚫ readonly=True 會使使用者介面中的欄位預設不可編輯。在 API 層面並沒有強制,模型方法中的程式碼仍然可以向其寫入。僅針對使用者介面設定
⚫ required=True 使得使用者介面中欄位預設必填。這通過在資料庫層面為列新增 NOT NULL
約束來實現。
⚫ index=True 為欄位新增資料庫索引,讓搜尋更快速,但同時也會部分降低寫操作速度。
⚫ copy=False 讓欄位在使用 ORM copy()方法複製欄位時忽略該欄位。除 to-many 關聯字
段外,其它欄位值預設會被複制。
⚫ groups 可限制欄位僅對一些組可訪問並可見。值為逗號分隔的安全組 XML ID 列表,如
groups=’ base.group_user,base.group_system’。
⚫ states 傳入依賴 state 欄位值的 UI 屬性的字典對映值。可用屬性有 readonly, required
和 invisible,例如 states={‘done’ :[(‘readonly’ ,True)]}。
“ 小貼士: 注意 states 欄位等價於檢視中的 attrs 屬性。同時注意檢視也支援 states 屬性,但用途不同,傳入逗號分隔的狀態列表來控制元素什麼時候可見。 ”
以下為欄位屬性關鍵字引數的使用示例:
name = fields.Char(
'Title',
default=None,
index=True,
help='Book cover title',
readonly=False,
required=True,
translate=False,
)
如前所述, default 屬性可帶有固定值,或引用函式來自動計算預設值。對於簡單運算,可使用lambda 函式來避免過重的有名函式或方法的建立。以下是一個計算當前日期和時間預設值的常用示例:
last_borrow_date = fields.Datetime(
'Last Borrowed On',
default=lambda self: fields.Datetime.now(),
)
預設值也可以是一個函式引用,或待定義函式名字串:
last_borrow_date = fields.Datetime(
'Last Borrowed On',
default='_default_last_borrow_date',
)
def _default_last_borrow_date(self):
return fields.Datetime.now()
當模組資料結構在不同版本中變更時以下兩個屬性非常有用:
⚫ deprecated=True 在欄位被使用時記錄一條 warning 日誌
⚫ oldname=’ field’是在新版本中重新命名欄位時使用,可在升級模組時將老欄位中的資料自
動拷貝到新欄位中

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

相關文章