【问题标题】:Odoo12 Domain condition with OR and AND logicOdoo12 域条件与 OR 和 AND 逻辑
【发布时间】:2020-08-29 07:39:38
【问题描述】:

我无法理解使用多个 and/or 子句创建条件的逻辑,我要重现的域是:

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

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

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

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

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

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

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

【问题讨论】:

    标签: odoo odoo-12


    【解决方案1】:

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

    Understanding OpenERP Domain Filter?

    enter link description here

    enter link description here

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

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

    【讨论】:

      【解决方案2】:

      ODOO 域遵循前缀表达式。您可以生成自己的领域条件了解它或

      从 odoo.osv 导入表达式

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

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

      表达式.AND([表达式.OR([条件A,条件B]),条件C, 条件D])

      【讨论】:

      • 谢谢 OmaL 我不知道第二个选项。
      猜你喜欢
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多