doamin 过滤条件

Posted itelephant

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了doamin 过滤条件相关的知识,希望对你有一定的参考价值。

doamin 过滤条件

在odoo中,通过domain来过滤数据记录

domain是一个list,里面有多个条件

条件是一个有3个元素的元祖 (‘字段名‘,‘比较操作符‘,‘值‘)

  • 字段名

当前模型的字段或者是通过点操作符访问当前模型的Many2one / Many2Many对象。如果左边是Many2Many对象的时候,则表示左边只要任意一个值符合条件则符合条件。

  • 比较操作符

操作符含义
= 等于
!= 不等于
>= 大于等于
> 大于
<= 小于等于
like 模糊查询
ilike 忽略大小写,模糊查询
not like 模糊不匹配
in 包含在内
not in 不包含
child_of 判断是否是value的子集

 

进行筛选的变量,必须能通过操作符来和字段进行比较。

比如你要过滤出产品为服务类型并且价格大于1000的产品

domain = [(‘product_type‘, ‘=‘, ‘service‘), (‘unit_price‘, ‘>‘, 1000)] domain作用在一个model上用model.search(domain)

默认的 domain是以and的方式连接2个条件也就是说 上面的domain表达式等于 [‘&‘,(‘product_type‘, ‘=‘, ‘service‘), (‘unit_price‘, ‘>‘, 1000)],and用&表示(逻辑操作符),这种把操作符放在前面的表达式叫做波兰表示法

 

  • 逻辑操作符

    • & (AND) 接2个操作数

    • | (OR) 接2个操作数

    • ! (NOT) 接1个操作数

[‘|‘,(‘product_type‘, ‘=‘, ‘service‘),‘!‘, ‘&‘,(‘unit_price‘, ‘>=‘, 1000),(‘unit_price‘, ‘<‘, 2000)] 读法,先看最后一个逻辑符 后面所有的条件作为操作数, 变成[‘|‘, (‘product_type‘, ‘=‘, ‘service‘), ‘!‘, cond] 同样规则[‘|‘, (‘product_type‘, ‘=‘, ‘service‘), cond]

domain的另外一个用途是用在关联字段里,可以在model.py field里定义或在xml view的field里, 过滤关联字段记录

 

以上是关于doamin 过滤条件的主要内容,如果未能解决你的问题,请参考以下文章

条件片段和导航重用

4.3 合并重复的条件执行片段

为什么我不能在此片段中生成唯一对象数组?

如何有条件地将 C 代码片段编译到我的 Perl 模块?

自动刷新android片段,直到满足条件

兼容ie8,firefox,chrome浏览器的代码片段