如何将 "and" 搜索运算符添加到 odoo XML-RPC api 调用中?

How to add "and" search operators to odoo XML-RPC api calls?

我有一个搜索语句如下

models.execute_kw(db, uid, password,'stock.move', 'search_read',                                                                 [[['origin','=','INVOICE ## 44'],
['picking_type_id', '=', 2],
['product_id', '=', 123],
['state', '=', 'cancel']]],
) 

我希望能够搜索已取消和分配的记录。我尝试了以下操作。

models.execute_kw(db, uid, password,'stock.move', 'search_read',                                                                 [[['origin','=','INVOICE ## 44'],
    ['picking_type_id', '=', 2],
    ['product_id', '=', 123],
    ['|', ['state', '=', "cancel"], ['state', '=', "assigned"]]]
    ) 

但是,这个 returns 列表不是正确的运算符的错误。我查看了文档 https://www.odoo.com/documentation/13.0/developer/reference/addons/orm.html,虽然他们有示例,但他们没有清楚地解释如何实现多个相同状态或其他属性。

如果我们想检查记录的多状态,我们可以简单地使用in运算符。

试试这个,

[['state', 'in', ["cancel", "assigned"]]]

您可以在 link 下找到 part:

Domain criteria can be combined using logical operators in prefix form:

'&' logical AND, default operation to combine criteria following one another. Arity 2 (uses the next 2 criteria or combinations).

'|' logical OR, arity 2.

'!' logical NOT, arity 1.

因此,对于您的示例,您可以删除 | (OR) 运算符,因为 AND 是默认值,不得设置。或者,您可以将 | 替换为 &,如果您觉得后者更具可读性的话。

对于其他遇到类似问题的人,上面的 Kenly 能够解决它,这是一个语法问题。我无法在网上的任何地方找到一个明确的例子,所以在这里发帖以防有人发现类似的问题。

models.execute_kw(db, uid, password,
'stock.picking', 'search_read',
[['|', ['state', '=', "cancel"], ['state', '=', "assigned"]]])