Openerp 中的 domain
- 
oe中的domain多用于自定义搜索条件。 
 domain中的单个条件是一个三个元素组成的元组。第一个是对象的一个column,也就是字段名;第二个是比较运算符=, !=, >, >=, <, <=, like, ilike, in, not in, child_of, parent_left, parent_right;第三个就是用来比较的值了。多个条件用“|”(or),“&”(and),“!”(no)逻辑运算符链接。逻辑运算符作为前缀放置于条件前面。“|”与“&”必须两个条件链接,“!”对一个条件取反。默认逻辑运算符为“&”。
 举个例子:
 ['|','|',('group_ids','in',[g.id for g in user.groups_id]), ('user_id', '=', user.id), '&', ('user_id', '=', False), ('group_ids','=',False), '|','|', ('company_id','=',False), ('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]
 这个例子的意思是:
 ['|',
 '|',('group_ids','in',[g.id for g in user.groups_id]), ('user_id', '=', user.id),
 '&', ('user_id', '=', False), ('group_ids','=',False),
 '|',
 '|', ('company_id','=',False), ('company_id','child_of',[user.company_id.id]),
 ('company_id.child_ids','child_of',[user.company_id.id])]
 写个容易看的方式:
 (('group_ids','in',[g.id for g in user.groups_id]) or ('user_id', '=', user.id)) or (('user_id', '=', False) and ('group_ids','=',False)) or (('company_id','=',False) or ('company_id','child_of',[user.company_id.id])) or ('company_id.child_ids','child_of',[user.company_id.id])
- 
谢谢分享!!! 
- 
谢谢分享。 
 在楼主的基础上进一步整理了一下,把示例简化了一下。
 <br / http://www.cnblogs.com/cnshen/p/3189306.html br />
- 
domain好像并不适用model中的one2many字段,试过多次,没有过滤。 
- 
[quote author=a136794drt link=topic=5864.msg30713#msg30713 date=1437546279] 
 domain好像并不适用model中的one2many字段,试过多次,没有过滤。
 [/quote]
 不知道你的domain语句是怎样的呢?实际上是适用x2m字段的,odoo默认模块就有这样的例子:['|', ('message_follower_ids','in',[user.partner_id.id]), ('partner_id.id','=',user.partner_id.id)]


