Odoo Domain條件表示式寫法總結
1、Domain條件表示式規則
最簡單的格式:[('欄位','操作符',值)]
例:[('shenqr.user_id','=',uid)]
說明:domain中的單個條件是一個由三個元素組成的元組,所以務必加上()
。元組中第一個引數是物件的欄位名column
;元組中的第二個引數是比較運算子=,!=,>,>=,<,<=,like,ilike,in,not in,child_of,parent_left,parent_right
;元組中第三個就是用來比較的值了。多個條件用|
(or),&
(and),!
(no)邏輯運算子連結。邏輯運算子作為字首放置於條件前面。|
與&
必須兩個條件連結,!
對一個條件取反。預設邏輯運算子為&
。
注意:在xml檔案中使用時,&
要用&
表示,>=
要用>&
表示,<=
要用<&
表示,!=
最好用><
表示。
2、不帶邏輯運算子的簡單表示式
過濾狀態為待批:[('state','=','wait_prove')]
過濾狀態為草稿、待批:[('state','in',('draft','wait_prove'))]
或者[('state','in',['draft','wait_prove'])]
過濾請假天數大於3天:[('tians','>',3)]
3、帶邏輯運算子的簡單表示式
假設a,b分別是不帶邏輯運算子的簡單表示式:
a=('state','><','draft')
b=('tians','<=',1)
a and b:[a,b] 或 ['&',a,b]
a or b:['|',a,b]
Eg:請假模組,副經理登入時待審批的請假單(狀態是待批,並且請假天數在一天以內)選單過濾條件:[('state','=','wait_prove'),('tians','<=',1)]
4、帶邏輯運算子的稍複雜的表示式
同上,假設a,b,c分別是不帶邏輯運算子的簡單表示式
a and b and c:[a,b,c] 或則 ['&','&',a,b,c]
a or b or c:['|','|',a,b,c]
a and b or c:['|','&',a,b,c]
a and (b or c):['&',a,'|',b,c]
Eg:經理待審批的請假單(狀態是待批,並且請假天數大於一天,並且是本部門的職員請假單,並且還不包含自己的請假單)選單過濾條件[('state','=','wait_prove'),('tians','>',1),('shenqr.user_id','<>',uid),('shenqr.department_id','=',department_id),('shenqr.user_id.groups_id','=',59)]
5、帶邏輯運算子的更復雜的表示式
同上,假設a,b,c,e,f,g分別是不帶邏輯運算子的簡單表示式。
(a or b and c) or (d and e) : ['|','&','|',a,b,c,'&',d,e)]
Eg:總經理待審批的請假單(所有部門副經理或經理狀態為待批的請假單,或3天以上部門經理批准過的請假單)選單過濾條件:['|','&','|',('shenqr.user_id.groups_id','=',60),('shenqr.user_id.groups_id','=',61),('state','=','wait_prove'),'&',('state','=','depmanager_proved'),('tians','>',3)]
(a or b and c) or (d and e) or (f and g)
['|','|','&','|',a,b,c,'&',d,e,'&',f,g]
Eg:總經理全部的請假單(所有部門副經理或經理狀態為待批的請假單,或3天以上部門經理批准過的請假單,或3天以上狀態為同意或駁回的請假單據)選單過濾條件:['|','|','&','|',('shenqr.user_id.groups_id','=',60),('shenqr.user_id.groups_id','=',61),('state','=','wait_prove'),'&',('state','=','depmanager_proved'),('tians','>',3),'&',('state','in',['proved','rejected']),('tians','>',3)]
相關文章
- 通用函式和條件表示式函式
- Java 條件表示式的優化Java優化
- Oracle OCP(06):通用函式和條件表示式Oracle函式
- Lambda表示式總結
- CMake 生成器表示式---條件表示式和邏輯運算子
- Shell 條件判斷總結
- lambda表示式的寫法1
- 正規表示式總結
- 「譯」編寫更好的 JavaScript 條件式和匹配條件的技巧JavaScript
- 【開發篇sql】 條件和表示式(八) 10g 正規表示式SQL
- Java正規表示式總結Java
- 常用正規表示式總結
- JS正規表示式總結JS
- javascript正規表示式總結JavaScript
- 3.1Python流程控制(1):條件表示式Python
- IP地址網段表示法總結
- EntityFramework動態多條件查詢與Lambda表示式樹Framework
- 【開發篇sql】 條件和表示式(十) 特定的dmlSQL
- 【開發篇sql】 條件和表示式(九) group by語句SQL
- 【開發篇sql】 條件和表示式(六) Exists, not exsists,in ,not inSQL
- 【開發篇sql】 條件和表示式(五) 集合運算SQL
- 【開發篇sql】 條件和表示式(三) Null詳解SQLNull
- 把條件寫在單獨的if語句和放在for迴圈表示式中的區別
- 正規表示式學習總結
- JavaScript正規表示式方法總結JavaScript
- 正規表示式要點總結
- 正規表示式的小總結
- php之正規表示式函式總結PHP函式
- 總結Minor GC、Full GC觸發條件GC
- DBWR,LGWR,CKPT,ARCH觸發條件總結
- 條件函式函式
- 【開發篇sql】 條件和表示式(一) 資料型別SQL資料型別
- 超簡單!正規表示式總結
- 擴充正規表示式命令總結
- Rust 交叉編譯與條件編譯總結Rust編譯
- Oracle DBWR,LGWR,CKPT,ARCH 觸發條件 總結Oracle
- odoo 許可權管理學習總結Odoo
- odoo Web Controllers 學習總結OdooWebController