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里, 过滤关联字段记录

原文地址:https://www.cnblogs.com/itelephant/p/11819150.html

时间: 2024-10-14 09:18:27

doamin 过滤条件的相关文章

.NET深入实战系列--EF到底怎么写过滤条件

本文唯一访问地址:http://www.cnblogs.com/yubaolee/p/DynamicLinq.html 对于系统开发来说,按不同字段进行过滤查询是一种常见的需求.在EF中通常的做法是: /// <summary> /// 只是简单举例,只用了两个过滤条件 /// </summary> IEnumerable<UserInfo> Search(string username = "", string usertype = "&

一站式学习Wireshark(八):应用Wireshark过滤条件抓取特定数据流

应用抓包过滤,选择Capture | Options,扩展窗口查看到Capture Filter栏.双击选定的接口,如下图所示,弹出Edit Interface Settints窗口. 下图显示了Edit Interface Settings窗口,这里可以设置抓包过滤条件.如果你确知抓包过滤条件的语法,直接在Capture Filter区域输入.在输入错误时,Wireshark通过红色背景区域表明无法处理过滤条件.最有可能的情况是,过滤条件中含有输入错误,或是使用了display filter的

.NET深入实战系列--EF到底怎么写过滤条件(转)

原文来自:http://www.cnblogs.com/yubaolee/p/DynamicLinq.html 对于系统开发来说,按不同字段进行过滤查询是一种常见的需求.在EF中通常的做法是: /// <summary> /// 只是简单举例,只用了两个过滤条件 /// </summary> IEnumerable<UserInfo> Search(string username = "", string usertype = ""

解决 执行计划看不到过滤条件 出现&#39;PLAN_TABLE&#39; is old version的问题

解决 'PLAN_TABLE' is old version 分析sql执行计划时,遇到'PLAN_TABLE' is old version细想起来,数据库是从低版本升级的,估计是这个原因 解决方法: 删除plan_table重建 SQL>explain plan for select * from users; Explained. SQL>select * from table(dbms_xplan.display); PLAN_TABLE_OUTPUT-----------------

WirShark系列: 使用WireShark过滤条件抓取特定数据流(zz)

应用抓包过滤,选择Capture | Options,扩展窗口查看到Capture Filter栏.双击选定的接口,如下图所示,弹出Edit Interface Settints窗口. 下图显示了Edit Interface Settings窗口,这里可以设置抓包过滤条件.如果你确知抓包过滤条件的语法,直接在Capture Filter区域输入.在输入错误时,Wireshark通过红色背景区域表明无法处理过滤条件.最有可能的情况是,过滤条件中含有输入错误,或是使用了display filter的

使用fiddler的过滤条件

使用fiddler抓包的时候经常一下子显示很多的记录,看的眼花缭乱,需要这时候需要使用过滤条件来帮助你,一般常用的有三种过滤条件: 1.域名过滤,只显示特定域名的记录: 过滤的条件,如果前面有二级域名可以用*号代替,只过滤一级域名,设置好了后一定要点击Actions生效: 2.类型过滤,一般对各种图片.CSS.JS这类的静态素材也不需要看的情况下,直接全部过滤掉 需要过滤多少自己直接加入就好了 3.根据返回状态码,比如只想显示200的状态,其他的不显示

SQL优化 查询语句中,用 inner join 作为过滤条件和用where作为过滤条件的区别

前段时间遇到一个存储过程,参数之一是一个字符串,实际作用是在存超过中是作为一个查询条件处理的 在存储过程中,把字符串拆分成一个临时表之后作key值,作为一个查询条件,逻辑实现上有两种处理方式 insert into #t select key from split_function('传递进来的字符串',',') 第一种是与物理表做inner join,类似如下 select * from tableA a inner join tableB b on a.id=b.id inner join

自定义 Azure Table storage 查询过滤条件

本文是在Azure Table storage 基本用法一文的基础上,介绍如何自定义 Azure Table storage 的查询过滤条件.如果您还不太清楚 Azure Table storage 的基本用法,请先移步前文. 文章来源:葡萄城产品技术社区 让我们回到前文中提到的一个问题,如何过滤出 MyLogTable 表中某一天产生的所有日志?在进入细节之前,我们先来回顾一下 MyLogTable 类的设计: internalclassMyLogEntity : TableEntity {

Delphi TOpenDialog设置多个过滤条件

网上阅读opendialog1.filter设置多个过滤条件,这方面资料,表述不准确.本人学习体会如下: 1.filter以"|" 作为1组过滤. "|"左侧为 opendialog1显示的过滤提示字符,"|"左侧为过滤条件,如:'文档文件|*.doc': 2.过滤条件2个以上,可以通过";"字符追加,如:'文档文件|*.doc;*.docx;*.txt;*.xls': 3.如果2组过滤以上,通过 "|"字