以下為可用的非關聯字段類型以及其對應的位置參數:
- Char(string)是一個單行文本,唯一位置參數是string字段標簽。
- Text(string)是一個多行文本,唯一位置參數是string字段標簽。
- Selection(selection, string)是一個下拉選擇列表。選項位置參數是一個[(‘value’, ‘Title’),]元組列表。元組第一個元素是存儲在數據庫中的值,第二個元素是展示在用戶界面中的描述。該列表可由其它模塊使用selection_add關鍵字參數擴展。
- Html(string)存儲為文本字段,但有針對用戶界面 HTML 內容展示的特殊處理。出於安全考慮,該字段會被清洗,但清洗行為可被重載。
- Integer(string)僅需字段標題字符串參數。
- Float(string, digits)帶有第二個可選參數digits,該字段是一個指定字段精度的(x,y)元組,x 是數字總長,y 是小數位。
- Monetary(string, currency_field)與浮點字段類似,但帶有貨幣的特殊處理。第二個參數currency_field用於存儲所使用貨幣,默認應傳入currency_id字段。
- Date(string)和Datetime(string)字段只需一個字符串文本位置參數。
- Boolean(string)的值為True 或False,可傳入一個字符串文本位置參數。
- Binary(string)存儲文件類二進制文件,只需一個字符串文本位置參數。它可由Python使用 base64編碼字符串進行處理。
- 文本字符串:Char, Text和Html有一些特有屬性:
-
- size (Char)設置最大允許尺寸。無特殊原因建議不要使用,例如可用於帶有最大允許長度的社保賬號。
- translate使用得字段內容可翻譯,帶有針對不同語言的不同值。
- trim默認值為 True,啟動在網絡客戶端中自動去除周圍的空格。可通過設置trim=false來取消。
-
常用字段屬性
字段還有一些其它屬性供我們定義其行為。以下是常用的屬性,通常都作為關鍵字參數:
- 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 屬性,但用途不同,傳入逗號分隔的狀態列表來控制元素什么時候可見。