具有OR和AND逻辑的Odoo12域条件

问题描述

我无法理解创建带有多个和/或子句的条件的逻辑,我要复制的域是:

(Field1=A or Field2=B) AND Field3=C and Field4!=D

在我的搜索视图中,在我尝试过的域上:

domain="[(('&',('field4','!=',False),('Field3','=',False)),('|',('Field1','ilike','X'),('Field2','Y')))]"

domain="[(''&'',('&','Y')))]"

尝试过滤器时出现此错误:

 in distribute_not
    elif token in DOMAIN_OPERATORS_NEGATION:
TypeError: unhashable type: 'list'

有人可以向我解释在域中使用不同运算符建立多重条件的正确逻辑吗?

解决方法

通过此链接,我了解了它的工作原理:

Understanding OpenERP Domain Filter?

enter link description here

enter link description here

在我的情况下,正确的域是:

domain="['&',('Field4','!=',False),('Field3','=','|',('Field1','ilike','X'),('Field2','Y')]"
,

ODOO域跟随前缀表达式。您可以生成自己的域名条件来了解它,或者

从odoo.osv导入表达式

并使用expression.AND(list_of_conditions)expression.OR(list_of_conditions)来生成您的域。

在您的情况下(Field1 = A或Field2 = B)AND Field3 = C和Field4!= D,这可以称为(conditionA OR conditionB)AND conditionC AND conditionD。所以表达式将是

expression.AND([expression.OR([conditionA,conditionB]),conditionC, conditionD])

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...