odoo里domain条件表达式写法总结

自己做了个例子
仓库-仪表板-分拣类型 用户仓库1只能看到即墨库的 用户2只能看到青岛的

设置-用户组
仿照“仓库-用户”组新建一个用户组 在模块仓库下 名称叫即墨库管
在继承选项卡中选中“仓库-用户”
然后创建两个用户 仓库1隶属于即墨库管 仓库2隶属于青岛库管

设置-安全设定-记录规则
新建一个规则 名称“DOOM仓库1只能看即墨库的分拣”
对象stock.picking.type 也就是模型 相当于数据表
规则定义公式写入[('warehouse_id', '=', 1)]
其中warehouse_id 是表(模型)里的字段
1是数据 代表即墨库

完事了

-----------------------------------------------------------------

以下借鉴网络文章

OpenERP/Odoo Domain条件表达式写法总结
发布时间:2014-12-11 08:57:49来源:http://www.chinamaker.net


1) Domain条件表达式规则

    最简单的格式:[('字段', '操作符', 值)]

    例:
      [('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:
         请假模块,副经理登录时待审批的请假单(状态是待批,并且请假天数在一天以内)菜单过滤条件:

  [('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, 3)]

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'),('ti
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值