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

如何通过Python代码调用并正确显示Odoo Wizard弹窗

Odoo Wizard弹出失败排查与修复

核心问题定位

  • 未实际创建wizard记录:原代码仅获取了pos.assign.manual.quants模型的引用,没有调用create()方法生成wizard实例,传递的res_id为无效空值,导致弹窗无法加载对应数据。
  • 可选兼容问题:view_type参数在Odoo 13及以上版本已废弃,保留可能引发版本兼容报错。
  • 潜在异常风险:未校验视图是否存在,若env.ref未找到对应视图ID会直接抛出异常。

修复后代码

if self.move_id:
    # 校验视图是否存在,避免引用失效报错
    try:
        view = self.env.ref('modified_pos.pos_assign_manual_quants_form_view')
    except ValueError:
        # 视图不存在时留空让Odoo自动匹配该模型的form视图
        view = False
    # 实际创建wizard记录,可根据业务需要在create中传入默认字段值
    wiz = self.env['pos.assign.manual.quants'].create({})
    return {
        'name': _('修改数量'),
        'type': 'ir.actions.act_window',
        'view_mode': 'form',
        'res_model': 'pos.assign.manual.quants',
        'views': [(view.id if view else False, 'form')],
        'view_id': view.id if view else False,
        'target': 'new',
        'res_id': wiz.id,
        'context': self.env.context,
    }

额外排查项

如果修改后仍无法弹出,可依次检查以下配置:

  • 确认pos.assign.manual.quants模型已正确定义,且当前用户拥有该模型的访问权限(ACL配置正常)
  • 确认modified_pos.pos_assign_manual_quants_form_view视图已在模块的__manifest__.py中正确注册,模块已完成升级
  • 确认触发该方法的动作没有被其他JS/后端逻辑拦截,返回的action结构没有被覆盖

内容的提问来源于stack exchange,提问作者mr-intrepid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:06:03