2017-05-02 59 views
0

我想anidate的運營商的OR裏面,odoo 9如何在搜索功能中對OR進行搜索?在Odoo 9

的搜索功能,我有這兩個條件:

A = self.env['sale.order'].search(['&', ('state', '=', 'done'), ('id', '>', my_id)]) 
B = self.env['sale.order'].search([('date_order', '>', my_date)]) 

這些條件下工作的每個單獨的細,但我需要一個

我已經試過這樣:

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 

什麼是設置條件的正確方法?

+0

@Odedra這是複製粘貼的錯誤。我已糾正它。 – MouTio

回答

1

這應做到兩元組之前一直使用的運營商:

C = self.env['sale.order'].search(['|', ('date_order', '>', my_date), '&', ('state', '=', 'done'), ('id', '>', my_id)]) 

EDITS:

這是一樣的:

('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