Odoo中文网|Odoo实施培训

 找回密码
 立即注册
搜索
热搜: Odoo OpenERP 实施
查看: 5981|回复: 0
打印 上一主题 下一主题

Odoo开发之domain详解

[复制链接]

11

主题

21

帖子

73

积分

版主

Rank: 7Rank: 7Rank: 7

积分
73
跳转到指定楼层
楼主
发表于 2015-9-6 22:08:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Odoo中的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])

原作者: qdfulee

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|技术支持|开发手册|Odoo中文网-远鼎旗下odoo培训网站 ( 苏ICP备15039516号 )

GMT+8, 2024-4-25 17:59 , Processed in 0.011307 second(s), 11 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表