暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

读懂odoo中的条件(中缀)表达式写法

odoo与PostgreSQL 2021-04-16
988

在odoo的orm查询表达式或者视图的筛选条件中经常用到多个条件组合的写法,odoo13中的书写方式是波兰表达式,又称为前缀表达式。

以下内容来自odoo13官方文档:

如果我们在odoo要进行下面的查询:

查找name为ABC 、来自于比利时或者德国,且语言不是英语的合作伙伴

[('name','=','ABC'),
('language.code','!=','en_US'),
'|',('country_id.code','=','be'),
('country_id.code','=','de')]

这条domain语句的意思为

(name is 'ABC')
AND (language is NOT english)
AND (country is Belgium OR Germany)

在官方文档中,对这种写法没有过多的介绍,导致很多小白一头雾水。接下来开始进入正式的学习。首先,我们了解下中缀表达式。

中缀表达式

中缀表达式,名字看着比较陌生,其实就是我们从学校一直使用的计算方式。

例如:

1+2
(1+2)*3
3+4*2+4

中缀表达式的计算符号放在操作数(要被计算的内容)的中间,先从优先级最高的运算符算起。相信大家对这种形式再熟悉不过了,这里就不做过多的介绍。接下来给大家介绍下前缀表达式。

前缀表达式(波兰表达式)

对于人类来说中缀表达式易于理解,但对于计算机的运算则比较麻烦。1920年,波兰科学家Jan ukasiewicz发明了一种不需要括号的计算表达式的表示法,相对于中缀表达式,这种表示法将操作符号写在操作数之前,所以被称为前缀表达式。

例如:

# 前边的中缀表达式转为前缀表达式,下边会介绍具体的转换方法
# 1+2
+,1,2

# (1+2)*3
*,+,1,2,3

# 3+4*2+4
+,+,3,*,4,2,4

最后修改时间:2021-04-16 23:04:06
文章转载自odoo与PostgreSQL,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论