概要
odoo的波兰表达式用途广泛,最常见是用在domain的条件表示中。博主个人人为,这个表达就是一个数据筛选条件的简写方式。
波兰表达
常用操作符:
- “&”:与-两个同时满足
- “|”:或-两个满足其一
- “!”:非-取反
我们先来看看odoo用到波兰表达的源码:
filter_domain="['|','|','|',('partner_name', 'ilike', self),('email_from', 'ilike', self), ('contact_name', 'ilike', self), ('name', 'ilike', self)]"
用法:
从左至右开始运行,一个操作符后跟两个操作数作为一组运算,运算结果作为此组操作的操作数,以此类推,最终把操作符使用完毕。
以上例子解读:
- ['|','|',(('partner_name', 'ilike', self),'|',('email_from', 'ilike', self)), ('contact_name', 'ilike', self), ('name', 'ilike', self)]
- ['|',((('partner_name', 'ilike', self),'|',('email_from', 'ilike', self)),'|',('contact_name', 'ilike', self)), ('name', 'ilike', self)]
- [((('partner_name', 'ilike', self),'|',('email_from', 'ilike', self)),'|',('contact_name', 'ilike', self)),'|', ('name', 'ilike', self)]
小结
多写多敲多思考,毕竟,知己知彼才能看懂源码。