您的位置:首页 > 大数据 > 人工智能

OpenERP7.0 Domain条件表达式写法小结

2014-01-22 18:38 260 查看
OpenERP7.0Domin条件表达式写法总结
1Domin条件表达式规则最简单的格式:[('字段', '操作符', 值)]例:[('shenqr.user_id', '=', uid)]说明:domain中的单个条件是一个三个元素组成的元组,所以务必加上()。元组中第一个是对象的一个column,也就是字段名;元组中第二个是比较运算符 “=, !=, >, >=, <, <=, like, ilike, in, not in,child_of, parent_left, parent_right“ ;(注意:在xml文件中使用时,'>=''>='表示 ,'<='要用 '<='表示,'!='最好'><'表示,'>'最好'>'表示,'<'最好用 '<' 表示)元组中第三个就是用来比较的值了。多个条件用“|”(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:请假模块,副经理登录时待审批的请假单(状态是待批,并且请假天数在一天以内)菜单过滤条件:<field name="domain">[('state','=','wait_prove'),('tians', '<=', 1)]</field>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:经理待审批的请假单(状态是待批,并且请假天数大于一天,并且是本部门的职员请假单,并且还不包含自己的请假单)菜单过滤条件<field name="domain"> [('state', '=', 'wait_prove'), ('tians', '>', 1), ('shenqr.user_id','<>',uid),('shenqr.department_id','=',department_id),('shenqr.user_id.groups_id', '=', 59)] </field>5带逻辑运算符的更复杂的表达式同上,假设a , b, c, e, f, g分别是不带逻辑运算符的简单表达式(a or b and c) or ( d and e ) :['|', '&','|', a, b, c, '&', d, e, 3)]Eg:总经理待审批的请假单(所有部门副经理或经理状态为待批的请假单,或3天以上部门经理批准过的请假单)菜单过滤条件:<field name="domain">['|', '&','|', ('shenqr.user_id.groups_id', '=', 60), ('shenqr.user_id.groups_id', '=', 61), ('state', '=', 'wait_prove'), '&', ('state','=','depmanager_proved'),('tians', '>', 3)]</field>(a or b and c) or (d and e) or (f and g)['|','|', '&','|', a, b, c, '&', d,e,'&', f,g]Eg:总经理全部的请假单(所有部门副经理或经理状态为待批的请假单,或3天以上部门经理批准过的请假单,或3天以上状态为同意或驳回的请假单据)菜单过滤条件:<field name="domain">['|','|', '&','|', ('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)]</field>5) 参考资料http://www.cnblogs.com/cnshen/p/3189306.htmlhttp://shine-it.net/index.php?topic=5864.06) 注意和7.0之前的版本差异较大:v6.0的部分写法如下图:
原文:http://blog.csdn.net/littlebo01/article/details/17509761

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  openerp python