文档章节

odoo 中的 domian 和 运算符

openerp
 openerp
发布于 01/13 11:51
字数 818
阅读 9
收藏 0

大家好,

我们今天主要来介绍一下odoo 中的 Domian 。

什么是Domain ? 简单的说就是一种条件语句,用来过滤您的数据。这些条件,通过使用Polish Notation(波兰表达式) 来定义。

比如:

<u>正 常 表 达 :</u> ((A AND B) OR C ) OR (D AND E) <u>波兰表达式:</u> ['|', '|', '&', A, B, C, '&', D, E]

解释:

步骤一:

从外面的运算符开始,将它移动到最前面

((A AND B) OR C ) <u>OR</u> (D AND E) => <u>OR</u> ((A AND B) OR C ) (D AND E)

注意:下划线的为移动的运算符

步骤二:

重复步骤一,直到所有运算符都移动至最左侧

OR ((A AND B) <u>OR</u> C ) (D AND E) => OR <u>OR </u>((A AND B) C ) (D AND E) OR OR ((A <u>AND</u> B) C ) (D AND E) => OR OR <u>AND</u> ((A B) C ) (D AND E) OR OR AND ((A B) C ) (D <u>AND</u> E) => OR OR AND ((A B) C ) <u>AND</u> (D E)

步骤三:

去除所有的括号

polish_domain_notation

最后,让我们将表达式写入xml 文件

<field name="lot_id" domain="['|', '&amp;', ('product_id', '=', product_id), ('product_id.tracking', '!=', 'serial'), ('on_work_order_id', '=', id)]" groups="stock.group_production_lot"/>

注意: 在写xml 的时候,要用

'&amp;'

代替 ‘&’

接下来, 我们需要说说odoo中的 domain 运算符:

判断运算 : ! (否), | (或), & (与)

条件运算:  '=', '!=', '<=', '<', '>', '>=', '=?', '=like', '=ilike', 'like', 'not like', 'ilike', 'not ilike', 'in', 'not in', 'child_of'

实例:[输入] 输入: 记录 1: Openerphk 记录 2: openerphk 记录 3: Opensource 记录 4: opensource 记录 5: Open 记录 6: openh 记录 7: Odoohk 记录 8: odoohk 记录 9: Odooopenerphk 记录 10: OdooOpenerphk

'like': [('input', 'like', 'open')] - 返回区分大小写的 (通配符 - '%open%') 搜索的结果. O/p: open, opensource, openerphk, Odooopenerphk

'not like': [('input', 'not like', 'open')] - 然后结果与大小写敏感不匹配(通配符 - '%open%') 搜索的结果. O/p: Openerphk, Opensource, Open, Odoohk, odoohk, OdooOpenerphk

**'=like': **[('name', '=like', 'open')] - 返回恰好是 (= 'open') 大小写敏感搜索的结果. O/p: open

'ilike': [('name', 'ilike', 'open')] - 返回恰好是(通配符 - '%open%') 大小写不敏感的搜索结果. O/p: Openerphk, openerphk, Opensource, opensource, Open, open, Odooopenerphk, OdooOpenerphk

'not ilike': [('name', 'not ilike', 'open')] - 返回结果与大小写敏感不匹配 (通配符 - '%open%') 的搜索结果. O/p: Odoohk, odoohk

'=ilike': [('name', '=ilike', 'open')] - 返回结果恰巧是 (= 'open' or 'Open') 大小写不敏感的搜索结果. O/p: Open, open

**'=?':**name = 'odoo' parent_id = False [('name', 'like', name), ('parent_id', '=?', parent_id)] - 返回名称域结果 & True name = 'odoo' parent_id = 'openerp' [('name', 'like', name), ('parent_id', '=?', parent_id)] - 返回名称域结果 & parent_id 域结果 '=?' 是一个捷径术语,只要右侧为None 或者False ,结果就是TRUE。'=?' 在一些情况类似 '=' 

'in': [('value1', 'in', ['value1', 'value2'])] - 此运算符会检查 value1 是否在右侧的列中出现.

'not in': [('value1', 'not in', ['value2'])] - 操作符将检查value1在右项列表中是否不存在;

*** “in”和“not in”需要使用值列表/元组,  '=' 和 '!=' 可以应用于字符串

'=': value = 10 [('value','=',value)] 

'!=': value = 15 [('value','!=',value)] 

'child_of': parent_id = '1' #Agrolait 'child_of': [('partner_id', 'child_of', parent_id)] - 返回给与的parent_id中partner_id左右列表

'<=', '<', '>', '>=': 这些运算符主要用于比较日期。- [('date', '>=', date_begin), ('date', '<=', date_end)].

当然,您也可以比较 int 或者 float .

© 著作权归作者所有

共有 人打赏支持
openerp
粉丝 0
博文 5
码字总数 4856
作品 0
成都
其他
私信 提问
Odoo11安装,Odoo11生产环境部署:在Ubuntu Server16.04下Odoo11安装

本文使用有sudo权限的odoo用户进行测试 如果是阿里云,可以 1先创建个odoo用户 sudo adduser odoo 2:给root 权限: sudo vi /etc/sudoers 修改文件参考如下: # User privilege specificati...

siweilai
2018/06/26
0
0
在Ubuntu上安装Odoo 11(企业版)

在Ubuntu上安装Odoo 11(企业版) 2017年10月8日YENTHE666 在本教程中,我将学习如何在Ubuntu 16.04上安装Odoo 11社区或企业。您将使用的脚本基于AndréSchenkels的代码,但已更新,升级和改...

james_laughing
2018/03/07
0
0
CentOS 7.x里yum安装Odoo 8.0&9.0(OpenERP)

(总结)CentOS 7.x里yum安装Odoo 8.0&9.0(OpenERP) 最近想了解下合适中小企业使用的ERP系统,研究了几款主流的开源ERP系统以及了解下SAP、Oracle EBS等大型ERP系统,开源ERP里Odoo(以前叫...

李伟铭k
2018/07/09
0
0
安装Odoo(翻译)

翻译者注: 翻译本文的目的是为了安装Odoo 9.0。本文所描述的安装CentOS为7.x,请注意。本人测试了Aliyun CentOS 7.2的RPM安装过程。 正文 这里有若干方式安装Odoo,或者不完整安装依赖的用户...

抢小孩糖吃
2016/08/16
92
2
如何在CentOS 7.x中安装OpenERP(Odoo)

各位好,这篇教程关于的是如何在CentOS 7中安装Odoo(就是我们所知的OpenERP)。你是不是在考虑为你的业务安装一个不错的ERP(企业资源规划)软件?那么OpenERP就是你寻找的最好的程序,因为...

酱醋茶丶
2015/11/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(11.9)hive操作基础知识

上一篇博客分享了hive的简介和初体验,本节博主将继续分享一些hive的操作的基础知识。 DDL操作 (1)创建表 #建表语法CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name ...

em_aaron
今天
0
0
OSChina 周四乱弹 —— 我家猫真会后空翻

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @我没有抓狂 :#今天听这个# 我艇牛逼,百听不厌,太好听辣 分享 Led Zeppelin 的歌曲《Stairway To Heaven》 《Stairway To Heaven》- Led Z...

小小编辑
今天
1
0
node调用dll

先安装python2.7 安装node-gyp cnpm install node-gyp -g 新建一个Electron-vue项目(案例用Electron-vue) vue init simulatedgreg/electron-vue my-project 安装electron-rebuild cnpm ins......

Chason-洪
今天
3
0
scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
今天
3
0
通俗易懂解释网络工程中的技术,如STP,HSRP等

导读 在面试时,比如被问到HSRP的主备切换时间时多久,STP几个状态的停留时间,自己知道有这些东西,但在工作中不会经常用到,就老是记不住,觉得可能还是自己基础不够牢固,知识掌握不够全面...

问题终结者
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部