python-3.x 如何在odoo XML-RPC API调用中添加“and”搜索运算符?

ct3nt3jp  于 2023-06-25  发布在  Python
关注(0)|答案(4)|浏览(115)

我有一个搜索语句如下

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"]]]
    )

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

hts6caw3

hts6caw31#

如果我们想检查记录的多状态,我们可以简单地使用in操作符。
试试这个

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

blmhpbnm2#

正如你可以在你自己的链接下找到以下部分:
可以使用前缀形式的逻辑运算符组合域条件:
'&'逻辑AND,默认操作,用于组合一个接一个的条件。Arity 2(使用接下来的2个标准或组合)。
'|'逻辑OR,arity 2。
'!'逻辑非,arity 1。
因此,对于您的示例,您可以删除|(OR)运算符,因为AND是默认值,不能设置。或者,如果您觉得&更具可读性,可以将|替换为&

z9ju0rcb

z9ju0rcb3#

对于任何其他有类似问题的人来说,上面的Kenly能够解决它,是一个语法问题。我无法找到一个明确的例子,这在任何地方在线,所以张贴在这里的情况下,任何人发现类似的问题。

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

dgjrabp24#

//query 
            inParams.push([
                ['id', 'in', location_ids], // AND
                ['service_id', '=', type],   // AND
                ['subscription_community', '!=', false],  // AND
                '|',   // OR
                ['nbplace', '=', nbplace1],
                ['nbplace', '=', nbplace2]
            ]);
            inParams.push(['id', 'car_ids']); //  projection  fileld

相关问题