You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Odoo XML-RPC API调用中正确使用AND/OR逻辑搜索运算符

错误原因

你遇到的报错是因为Odoo ORM的搜索域采用前缀波兰表示法,逻辑运算符需要放在待连接的条件之前,且所有运算符、条件都要平级放在搜索域列表中,你之前的写法将|运算符和两个state条件封装为一个独立子列表,导致系统无法识别该结构为合法的运算符和条件组合。


解决方案

方案1(首选):使用in运算符

针对同一字段匹配多个值的场景,直接使用in运算符即可,写法更简洁易读:

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

方案2:正确使用|或运算符

如果需要用到逻辑或实现多条件匹配,需要将运算符放在待连接的两个条件之前,且和其他条件平级放置:

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

说明:逻辑运算符|(或)、&(且,默认)、!(非)都需要遵循前缀写法规则,多个逻辑条件嵌套时从右向左匹配运算顺序。


内容的提问来源于stack exchange,提问作者apexprogramming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:15:09