如何使用 API 调用 Odoo 服务器

How to call Odoo server using the API

我已经在 Odoo 10 中定义了一个服务器操作。通过使用服务器操作 ID,可以很容易地在视图中创建一个按钮来调用该服务器操作。例如,如果服务器操作的 ID 为 123:

<button name="123" type="action" string="Run Action"/>

有什么方法可以通过 API 调用此操作吗?我不确定如何执行此操作,因为服务器操作没有方法名称。这只是一个ID。我还需要能够将上下文传递给操作。这可能吗?

在 Odoo 的基本模块中,定义了模型 ir.actions.server (base/ir/ir_actions.py)。有一个名为 run 的方法应该可以从 XMLRPC API.

调用

要使用上下文,只需将其作为名为 context 的关键字参数 (kwargs) 添加到调用中,例如:

models.execute_kw(db, uid, password,
    'res.partner', 'check_access_rights',
    ['read'], {'raise_exception': False, 'context': {'test': True}})

(示例扩展自 official example 'Calling Methods'

好像有点魔幻,不过还是搞定了here.