我想在 odoo 9 的搜索功能中对 OR 中的 AND 运算符进行 anidate。
我有这两个条件:
A = self.env['sale.order'].search(['&', ('state', '=', 'done'), ('id', '>', my_id)])
B = self.env['sale.order'].search([('date_order', '>', my_date)])
这些条件每个单独工作都很好,但我需要 A 或 B
我试过这个:
C = self.env['sale.order'].search(['|', ('date_order', '>', my_date), ('&', ('state', '=', 'done'), ('id', '>', my_id))])
那是行不通的。它给了我这个错误:
ValueError: "Invalid leaf ('&', ('state', '=', 'done'), ('id', '>', my_id))" while evaluating
设置条件的正确方法是什么?
最佳答案
这应该始终在二元组之前使用运算符:
C = self.env['sale.order'].search(['|', ('date_order', '>', my_date), '&', ('state', '=', 'done'), ('id', '>', my_id)])
编辑:
这与:
('date_order', '>', my_date) OR (('state', '=', 'done') AND ('id', '>', my_id))
示例:
A and (B or ( C AND D))
A and (B or (AND, C, D))
A and,( or, B, AND, C, D)
and, A, or, B, AND, C, D
关于python - 如何在搜索函数中取消 OR 中的 AND?在 Odoo 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43741256/