我們今天主要來介紹一下odoo 中的 domian 。
什麼是domain ? 簡單的說就是一種條件語句,用來過濾您的資料。這些條件,通過使用polish notation(波蘭表示式) 來定義。
比如:
正 常 表 達 :
((a and b) or c ) or (d and e)
波蘭表示式:
['|', '|', '&', a, b, c, '&', d, e]
解釋:
步驟一:從外面的運算子開始,將它移動到最前面
((a and b) or c ) or (d and e) => or ((a and b) or c ) (d and e)
注意:下劃線的為移動的運算子
步驟二:重複步驟一,直到所有運算子都移動至最左側
or ((a and b) or c ) (d and e) => or or ((a and b) c ) (d and e)
or or ((a and b) c ) (d and e) => or or and ((a b) c ) (d and e)
or or and ((a b) c ) (d and e) => or or and ((a b) c ) and (d e)
步驟三:去除所有的括號
最後,讓我們將表示式寫入xml 檔案
注意: 在寫xml 的時候,要用
'&'
代替『&』
接下來,我們需要說說odoo中的 domain 運算子:
判斷運算 : ! (否), | (或), & (與)
條件運算:
'=', '!=', '<=', '', '>=', '=?', '=like', '=ilike', 'like', 'not like', 'ilike', 'not ilike', 'in', 'not in', 'child_of'
例項:[輸入]
輸入:記錄 1: openerphk
記錄 2: openerphk
記錄 3: opensource
記錄 4: opensource
記錄 5: open
記錄 6: openh
記錄 7: odoohk
記錄 8: odoohk
記錄 9: odooopenerphk
記錄 10: odooopenerphk
'like':[('input', 'like', 'open')] - 返回區分大小寫的 (萬用字元 - '%open%') 搜尋的結果.
o/p: open, opensource, openerphk, odooopenerphk
'not like':[('input', 'not like', 'open')] - 然後結果與大小寫敏感不匹配(萬用字元 - '%open%') 搜尋的結果.
o/p: openerphk, opensource, open, odoohk, odoohk, odooopenerphk
'=like':[('name', '=like', 'open')] - 返回恰好是 (= 'open') 大小寫敏感搜尋的結果.
o/p: open
'ilike':[('name', 'ilike', 'open')] - 返回恰好是(萬用字元 - '%open%') 大小寫不敏感的搜尋結果.
o/p: openerphk, openerphk, opensource, opensource, open, open, odooopenerphk, odooopenerphk
'not ilike':[('name', 'not ilike', 'open')] - 返回結果與大小寫敏感不匹配 (萬用字元 - '%open%') 的搜尋結果.
o/p: odoohk, odoohk
'=ilike':[('name', '=ilike', 'open')] - 返回結果恰巧是 (= 'open' or 'open') 大小寫不敏感的搜尋結果.
o/p: open, open
'=?':name = 'odoo' parent_id = false [('name', 'like', name), ('parent_id', '=?', parent_id)] - 返回名稱域結果 & true
name = 'odoo' parent_id = 'openerp' [('name', 'like', name), ('parent_id', '=?', parent_id)] - 返回名稱域結果 & parent_id 域結果
'=?' 是乙個捷徑術語,只要右側為none 或者false ,結果就是true。'=?' 在一些情況類似 '='
'in':[('value1', 'in', ['value1', 'value2'])] - 此運算子會檢查 value1 是否在右側的列**現.
'not in':[('value1', 'not in', ['value2'])] - 操作符將檢查value1在右項列表中是否不存在;
* 「in」和「not in」需要使用值列表/元組, '=' 和 '!=' 可以應用於字串
'=':value = 10 [('value','=',value)]
'!=':value = 15 [('value','!=',value)]
'child_of':parent_id = '1' #agrolait 'child_of': [('partner_id', 'child_of', parent_id)] - 返回給與的parent_id中partner_id左右列表
'<=', '', '>=':這些運算子主要用於比較日期。-
[('date', '>=', date_begin), ('date', '<=', date_end)].
當然,您也可以比較 int 或者 float .
Odoo中的嚮導
嚮導類似於彈窗,用於接收使用者的輸入,然後作出相應的處理。class xxwizard models.transientmodel 要點1 使用瞬態模型 name xx.wizard order id asc 字段 fields.型別 u 欄位名 要點2 這些欄位在彈窗中由使用者賦值 api.mod...
odoo中self的使用
一 self是什麼 目前新版的odoo中使用到的self,是對 游標cr 使用者id 模型 上下文 記錄集 快取 的封裝。我們可以通過 self.xx 獲取到這些封裝的東西,比如 self.cr self.uid。二 通過直接設定屬性來改變資料庫中字段值 我們在查出某模型的記錄後,可以通過 reco...
Odoo中的JS繼承機制
odoo中js的繼承有什麼用?odoo中有相當多的檢視,掛件等元件,在產品擁有個性化定製需求的時候,我們要修改某些widgets或者classes,那麼就需要理解odoo中前端框架的js架構,並且掌握繼承js的方法。js繼承方法 var new class demo class.extend 使用e...