我正在尝试从Odoo 10中的其他服务器操作调用服务器操作。根据documentation,您可以在第一个操作的代码中分配action
变量,以便调用下一步行动。这对我来说似乎没有用。
我的第一个操作是在stock.quant
模型上定义的,代码如下:
if record:
log('main')
action = {
"type": "ir.actions.server",
"id": 366,
"model_id": record.product_id.id,
}
然后,我定义了另一个服务器操作,其数据库标识为366
。它在product.product
模型上定义,代码如下:
log('triggered')
当我触发第一个操作时,我希望看到main
的日志条目和triggered
的条目。但是,我只看到main
的条目,表示第二个动作永远不会被触发。
我做错了吗?从另一个服务器操作触发一个服务器操作的适当方法是什么?
更新
通过反复试验我取得了一些进展,并且能够触发第二个服务器操作。触发它并传入适当模型以便第二个动作运行的方法是:
action = {
"type": "ir.actions.server",
"id": 366,
"context": {"active_id": record.product_id.id, "active_model": "product.product"}
}
当我将第一个动作添加到模型的“更多”菜单时,一切正常,并通过UI手动触发。我看到记录了“主要”和“触发器”。
但是,当我使用自动操作在更新或创建stock.quant
模型时触发此操作时,只会触发第一个操作。换句话说,只记录“main”,但不记录“trigger”。为什么第二个操作会在手动触发第一个操作时成功触发,但在通过自动操作触发第一个操作时无效?