资源描述:
《Odoo Domain条件表达式写法总结.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、OdooDomain条件表达式写法总结1)Domain条件表达式规则最简单的格式:[('字段','操作符',值)]例:[('shenqr.user_id','=',uid)]说明:domain中的单个条件是一个三个元素组成的元组,所以务必加上()。元组中第一个是对象的一个column,也就是字段名;元组中第二个是比较运算符“=,!=,>,>=,<,<=,like,ilike,in,notin,child_of,parent_left,parent_right“;(注意:在xml文件中使用时,'>='要用'>='表示,'<='要用'<='表示,'!='最好用'><
2、'表示,'>'最好用'>'表示,'<'最好用'<'表示)元组中第三个就是用来比较的值了。多个条件用“
3、”(or),“&”(and),“!”(no)逻辑运算符链接。逻辑运算符作为前缀放置于条件前面。“
4、”与“&”必须两个条件链接,“!”对一个条件取反。默认逻辑运算符为“&”。(注意:在xml文件中使用时,'&'要用'&'表示)2)不带逻辑运算符的简单表达式过滤状态为待批:[('state','=','wait_prove')]过滤状态为草稿、待批:[('state','in',('draft','wait_prove'))]或者[('state','in',['d
5、raft','wait_prove'])]过滤请假天数大于3天:[('tians','>',3)]3)带逻辑运算符的简单表达式假设a,b分别是不带逻辑运算符的简单表达式a=('state','><','draft')b=('tians','<=',1)aandb:[a,b]或['&',a,b]aorb:['
6、',a,b]Eg:请假模块,副经理登录时待审批的请假单(状态是待批,并且请假天数在一天以内)菜单过滤条件:[('state','=','wait_prove'),('tians','<=',1)]4)带逻辑运算符的稍复杂的表达式同上,假设a,b,c分别是不带
7、逻辑运算符的简单表达式aandbandc:[a,b,c]或则['&','&',a,b,c]aorborc:['
8、','
9、',a,b,c]aandborc:['
10、','&',a,b,c]aand(borc):['&',a,'
11、',b,c]Eg:经理待审批的请假单(状态是待批,并且请假天数大于一天,并且是本部门的职员请假单,并且还不包含自己的请假单)菜单过滤条件[('state','=','wait_prove'),('tians','>',1),('shenqr.user_id','<>',uid),('shenqr.department_id','=',depa
12、rtment_id),('shenqr.user_id.groups_id','=',59)]5)带逻辑运算符的更复杂的表达式同上,假设a,b,c,e,f,g分别是不带逻辑运算符的简单表达式(aorbandc)or(dande):['
13、','&','
14、',a,b,c,'&',d,e,3)]Eg:总经理待审批的请假单(所有部门副经理或经理状态为待批的请假单,或3天以上部门经理批准过的请假单)菜单过滤条件:['
15、','&','
16、',('shenqr.user_id.groups_id','=',60),('shenqr.user_id.groups_id','=',
17、61),('state','=','wait_prove'),'&',('state','=','depmanager_proved'),('tians','>',3)](aorbandc)or(dande)or(fandg)['
18、','
19、','&','
20、',a,b,c,'&',d,e,'&',f,g]Eg:总经理全部的请假单(所有部门副经理或经理状态为待批的请假单,或3天以上部门经理批准过的请假单,或3天以上状态为同意或驳回的请假单据)菜单过滤条件:['
21、','
22、','&','
23、',('shenqr.user_id.groups_id','=',60),('s
24、henqr.user_id.groups_id','=',61),('state','=','wait_prove'),'&',('state','=','depmanager_proved'),('tians','>',3),'&',('state','in',['proved','rejected']),('tians','>',3)]