Openerp 未完全识别Odoo API搜索标准

Openerp 未完全识别Odoo API搜索标准,openerp,odoo,Openerp,Odoo,我正在调用Odoo对象/搜索API,并试图返回外部ID列表的IR记录列表 我正在搜索的模型是ir.model.data,并希望匹配以下内容: model = res.country.state complete_name = l10n_uk.state_uk_99 在PHP中,我使用的搜索条件是: $ir_criteria = array( array('model', '=', 'res.country.state'), array('complete_name', 'in'

我正在调用Odoo对象/搜索API,并试图返回外部ID列表的IR记录列表

我正在搜索的模型是ir.model.data,并希望匹配以下内容:

model = res.country.state
complete_name = l10n_uk.state_uk_99
在PHP中,我使用的搜索条件是:

$ir_criteria = array(
    array('model', '=', 'res.country.state'),
    array('complete_name', 'in', 'l10n_uk.state_uk_99'),
);
我得到的是与模型匹配的所有ir.model.data记录,但不限于给定的完整名称

那为什么不起作用呢

在“外部标识符”管理页面中,我确实通过搜索以下内容获得了正确的结果(至少对于单个外部ID):

Model Name = res.country.state
Module = l10n_uk
External Identifier = state_uk_99

因此,这可能正是我需要通过API搜索的内容?

这是我用来搜索model ir.model.data的搜索条件,与上面的搜索条件相同:

数组(
数组(“model”、“=”、“res.country.state”),
数组(“模块”,“=”,“l10n_uk”),
数组(“名称”、“in”、数组(“state_uk_99”),
)
“完整名称”分为模块和名称。如果没有模块,则在搜索条件中将其设置为“”

如果我需要同时搜索多个模块,如果数据是以不同的方式随时间导入的,这似乎是一种需要,那么可以使用反向波兰符号。因此,可以使用以下搜索条件提取州“l10n_uk.state_uk_99”、“l10n_uk.state_uk_98”和“base.state_uk_10”:

数组(
数组(“model”、“=”、“res.country.state”),
//以下元素在模块数减1的情况下重复。
'|',
//第一个模块。
'&',
数组(“模块”,“=”,“l10n_uk”),
数组(“名称”、“in”、数组(“state_uk_99”、“state_uk_98”),
//第二个模块。
'&',
数组(“模块”,“基”),
数组(“名称”、“in”、数组(“state_us_10”),
//根据需要提供更多模块。
)
返回外部id的数据库id,用于获取这些外部id的res_id,该id指向res.county.state的状态记录

如果每个接口系统都能完全控制OpenERP上自己的一组外部ID,那就太好了,但事实并非如此,因此我们总是被困在外部ID上的模块和格式的良好旧组合中,所有这些都是通过以不同的方式导入数据创建的