Odoo8.0環境中,限制Selection欄位的有效值
阿新 • • 發佈:2019-01-27
今天有群裡的小夥伴諮詢,一個欄位是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值,或舊資料的值可能會是被過濾的值,如果不顯示出來,可能會有錯誤,所以最終的效果改為不影響舊的記錄,但新的資料不可以選擇這樣的效果。