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

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

我有一个搜索语句如下

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

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

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

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

hts6caw3

hts6caw31#

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

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

blmhpbnm2#

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

z9ju0rcb

z9ju0rcb3#

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

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

dgjrabp24#

  1. //query
  2. inParams.push([
  3. ['id', 'in', location_ids], // AND
  4. ['service_id', '=', type], // AND
  5. ['subscription_community', '!=', false], // AND
  6. '|', // OR
  7. ['nbplace', '=', nbplace1],
  8. ['nbplace', '=', nbplace2]
  9. ]);
  10. inParams.push(['id', 'car_ids']); // projection fileld

相关问题