odoo domain详解
odoo domain详解
参考的以下文档:
luohuayong:Odoo domain写法及运用
baimo:odoo domain表达式
1、domain 表达式规则
最简单的格式:[(‘字段名’,‘操作符’,值)]
例:[(‘shenqr.user_id’,’=’,uid)]
字段名
如果是Many2one/Many2Many/One2many字段,可以通过’.‘取出对应的属性,如:(‘create_uid.company_id.parent_id’,’=’, user.company_id.id)
操作符
操作符 | 说明 |
---|---|
=,>.<,>=,<=,!= | 比较运算,等于,不等于,大于,大于等于,小于,小于等于 |
like | 模糊匹配,通过%value%匹配 |
=like | 可以使用模式匹配,下划线-匹配一个字符,百分号%匹配零或者多个字符 |
ilike | 类似like,但是忽略大小写 |
=ilike | 类似=like,但是忽略大小写 |
not like | 通过%value%不匹配的 |
not ilike | 类似not like,但是忽略大小写 |
=? | 未设置或者等于,未设置表示当值是None或者是False,其余和=一样 |
in | 判断value是否在元素的列表里面 |
not in | 判断value是否不再元素的列表里面 |
child_of | 判断是否value的子录, [(A,‘child_of’,A)]返回true |
主要说明一下 child_of:
[('create_uid.company_id','child_of',[user.company_id.id])]
等价于
['|',('create_uid.company_id','=',[user.company_id.id]),('create_uid.company_id.parent_id','=',[user.company_id.id])]
值
包括字符串,True或False,数字等
在xml中,能取出当前登录用户user对象,你可以取出user.company_id.id等
条件间的逻辑
符号 | 说明 |
---|---|
& | 与,表示符号后2个条件同时满足,默认关系,可以省略 |
| 或,表示后面2条条件满足一个就行 ! 非,将后面一个条件反转,如果是ture,就变成False Odoo是使用了波兰表示法,简单来说,波兰表示法是一种操作符置于操作数前,并且不需要括号仍然能无歧义地解析表达的方法。 #### 波兰表示法的运算顺序 ####
以二元运算为例,从左至右读入表达式,遇到一个操作符后跟随两个操作数时,则计算之,然后将结果作为操作数替换这个操作符和两个操作数;重复此步骤,直至所有操作符处理完毕。
[’|’,’&’,’|’,a,b,c,’&’,d,e]
其中a,b,c,e,f,g分别是不带逻辑运算符的表达式,表达式的运算顺序:
[’|’,’&’,’|’,a,b,c,’&’,d,e]
[’|’,’&’,(a | b),c,’&’,d,e]
[’|’,((a | b) & c),’&’,d,e]
[’|’,((a | b) & c),(d & e)]
[(((a | b) | c) | (d & e))]
反之,如果我们要做到这个效果
A and (B or C) and D and E
先从里面开始,把or提前
A and (or B C) and D and E
把里面的and提前,去掉括号
and A or B C and D E
所以最后的domain可以这样写
A, '|', B, C, D, E
2、domain使用场景
1. 关联字段
(Many2one/One2many/Many2many)过滤出不同的选择结果
account_id = fields.Many2one('account.account', string='Default Debit Account', domain=[('active', '=', False)])
2. 过滤出想要显示的字段
在ir.actions.act_windon中添加Domain,当某个地方调用这个动作时,只显示符合domain条件的记录
<record id="relate_partner_opportunities" model="ir.actions.act_window">
<field name="name">Opportunities</field>
<field name="res_model">crm.lead</field>
<field name="view_mode">kanban,tree,form,graph,calendar</field>
<field name="domain">[('type','=','opportunity')]</field>
<field name="context">{'search_default_partner_id': active_id,'default_type': 'opportunity'
}</field>
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
</record>
3. 权限过滤
<record id="account_move_comp_rule" model="ir.rule">
<field name="name">Account Entry</field>
<field name="model_id" ref="model_account_move"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
4. 搜索过滤
<record id="view_crossovered_budget_search" model="ir.ui.view"><field name="name">crossovered.budget.search</field><field name="model">crossovered.budget</field><field name="arch" type="xml"><search string="Budget"><field name="name" filter_domain="[('name','ilike',self)]" string="Budget"/><field name="date_from"/><field name="date_to"/><filter string="Draft" domain="[('state','=','draft')]" help="Draft Budgets"/><filter string="To Approve" domain="[('state','=','confirm')]" help="To Approve Budgets" /><field name="state"/></search>
</field>
</record>
有什么不正确的,欢迎指正。
odoo domain详解相关推荐
- Odoo权限详解一张图
权限一张图 权限详解文字版 (部分转载并补充) 在Odoo中,使用用户组(res.groups)来管理权限,一个特殊的用户组是 员工/员工(base.group_user) 组,所有的用户都属于这个组 ...
- DNS IP DOMAIN 详解
一.DNS服务概述 DNS是Domain Name System的缩写,即域名系统.其实,DNS是internet的一项服务,一般叫域名服务或者域名解析服务,主要提供网站域名与IP地址的相互转换的服务 ...
- 国外虚拟主机域名绑定方法,及Addon Domain/Subdomains/Parked domain详解
在godaddy上申请的域名 ,使用megabyet.net的虚拟主机,碰到域名绑定的问题,用国内虚拟主机绑定的方法,行不通.差了google总算明白了,以下是我godaddy和megabyet.ne ...
- php setcookie(name, value, expires, path, domain, secure) 参数详解
setcookie() 定义一个和其余的 HTTP 标头一起发送的 cookie.和其它标头一样,cookie 必须在脚本的任何其它输出之前发送(这是协议限制).这需要将本函数的调用放到任何输出之前, ...
- docker常用命令详解
docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...
- CUDA之nvidia-smi命令详解---gpu
nvidia-smi是用来查看GPU使用情况的.我常用这个命令判断哪几块GPU空闲,但是最近的GPU使用状态让我很困惑,于是把nvidia-smi命令显示的GPU使用表中各个内容的具体含义解释一下. ...
- [转]HTTP协议详解
当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了We ...
- Mybatis复习笔记3:映射文件详解
映射文件详解 参数处理(#和$的区别) #{}:可以获取map中的值或者实体对象属性的值: ${}:可以获取map中的值或者实体对象属性的值: select * from person where i ...
- ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route
前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path.之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开 ...
最新文章
- pytorch nn.LSTM()参数详解
- 你的代码将会被GitHub埋在北极,保存1000年!
- Visual Studio 2013编译Mozilla NPAPI 示例注意事项
- Script:Speed Up Large Index Create or Rebuild
- 使用Lambda表达式重构委托
- Hazelcast入门指南第1部分
- 诗与远方:无题(六十六)- 清明时节雨纷下
- Numpy.where()
- 常见Spring异常
- 比尔盖茨:反垄断案让我分心,不然微软定能打败安卓
- cast函数 oracle 日期_从 Oracle 到 PostgreSQL ,某保险公司迁移实践
- 装机人员工具/解决局域网共享
- 计算机专业sci二区论文难吗,SCI二区论文发表难度大吗
- HTML基础笔记——head标签
- 【BZOJ 2054】 疯狂的馒头
- 南卡全新NEO系列骨传导耳机,主打轻运动风的南卡NEO测评!!!
- 员工认可和奖励的力量
- 应届生如何写求职邮件?
- 大学毕业学技术学什么好
- 自回避随机行走问题 c语言,醉汉随机行走/随机漫步问题(Random Walk Randomized Algorithm Python)...
热门文章
- java+ssh+mysql企业设备资产管理系统
- 教育叙事计算机学科,信息技术教师教育叙事
- 按照指定起始和截止时间分割视频
- XSSFWorkbook自由合并单元格并设置单元格样式
- Qt编写网络中转服务器(开源)
- 手机来电秀怎么开启_360手机卫士怎么设置来电秀
- 实现原理 扫描枪_扫描枪的工作原理
- win32:超时Timeout和延时Delay的区别
- python项目成功打包成exe,运行exe时报错:Unhandled exception in script:Failed to excute
- Warning: count(): Parameter must be an array or an object that implements Countable in 是什么意思?