Odoo Domain 波兰表示法

2019/8/16 odoo

# domain表达式

# 常见表达式

Domain是个多条件的列表,每个条件是一个三元表达式:[(字段名,操作符,值), (字段名,操作符,值)]

[('create_id','=',user.id)]

# Domain使用场合

  • python 函数中的过滤器
  • tree form 视图的过滤器

# 字段名

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

# Domain操作符

操作符 功能
= 比较运算 等于
!= 比较运算 不等于
> 比较运算 大于
>= 比较运算 大于等于
< 比较运算 小于
<= 比较运算 小于等于
in 包含,判断值是否在元素的列表里面
not in 不包含,判断值是否不在元素的列表里面

#

值进行筛选的变量,必须能通过操作符来和字段进行比较。
可以使用当前对象的字段

# 多条件的逻辑运算

波兰表示法的运算顺序
以二元运算为例,从左至右读入表达式,遇到一个操作符后跟随两个操作数时,则计算之,然后将结果作为操作数替换这个操作符和两个操作数;重复此步骤,直至所有操作符处理完毕。

['&', ('p.code', '=', 'CN'), ('p.code', '=', 'US')]