Odoo14社区版:点击查看One2many明细后如何关闭表单视图?
解决Odoo 14 One2many弹窗无法关闭的问题
方案1:使用客户端动作关闭弹窗并同步主视图
将按钮对应Python方法里的返回语句替换为:
return { 'type': 'ir.actions.client', 'tag': 'reload', }
该动作会直接关闭当前弹窗,同时自动刷新主表单视图,确保One2many字段的数据同步更新。
方案2:明确指定关闭当前窗口
若仅需关闭弹窗无需刷新主视图,可尝试返回带target参数的动作:
return { 'type': 'ir.actions.act_window_close', 'target': 'current', }
target='current'会明确指定关闭当前激活的弹窗窗口,避免动作作用范围模糊。
方案3:通过JavaScript强制关闭弹窗(复杂场景适配)
如果上述Python方案仍不生效,可在按钮的视图定义中添加onclick事件,调用客户端API直接关闭弹窗:
<button name="your_method_name" string="处理" type="object" onclick="odoo.action_manager.closeDialog()"/>
此方式会直接触发弹窗关闭,同时不影响Python方法的业务逻辑执行。
注意事项
- 确保按钮的
type属性设置为object,保证能正确调用后端Python方法。 - 若业务处理涉及数据修改,必要时可在方法末尾添加
self.env.cr.commit()(仅复杂场景下使用,Odoo通常会自动处理事务)。
内容的提问来源于stack exchange,提问作者holydragon
相关产品推荐
相关产品推荐

