1. 程式人生 > >Odoo8.0環境中,限制Selection欄位的有效值

Odoo8.0環境中,限制Selection欄位的有效值

今天有群裡的小夥伴諮詢,一個欄位是Selection型別,可能會有多個可選擇的專案,但在某個介面中,不想使用者選擇全部可選項,只希望在某幾個選項中選擇。如果是Many2one欄位,我們可以根據domain來過濾可選項,但Selection目前沒有這個過濾功能,所以我自己加了一個js模組,來實現此需求。

首先我們來看一個欄位的定義是這樣子的:

lab_kind = fields.Selection([("ddtn",u"自檢"),("rd",u"研發"),("external",u"外送")],string=u"檢測方式",default="ddtn")

正常來看,使用者是可以選擇三個專案的任意一個,我在xml定義中加了一個屬性值,如下:

<field name="lab_kind" required="1" opt_disable="rd,ddtn"/>

增加的opt_disabled是用來指定使用者介面上哪幾個專案不允許選擇,多個專案值可以用逗號分隔。

開啟操作介面,使用者在編輯或新增時,看到的效果如下圖:

圖片

前面兩個選項會進行disabled,可以看到,但不可以選擇。本來開始是想把不可選的專案過濾掉不顯示,但考慮到有些欄位的default值,或舊資料的值可能會是被過濾的值,如果不顯示出來,可能會有錯誤,所以最終的效果改為不影響舊的記錄,但新的資料不可以選擇這樣的效果。