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

Odoo模块安装/升级时自动重定向至模块视图实现咨询

实现Odoo模块安装/升级后自动重定向到指定视图

要实现和Odoo内置Website模块一样的安装/升级后自动重定向效果,需要结合后端钩子标记和前端JS检测跳转两部分来完成,以下是具体实现步骤:


1. 后端钩子:设置重定向标记

通过模块的安装/升级钩子,给系统添加一个临时标记,用于告知前端需要执行重定向操作。

步骤1-1:创建钩子文件

在模块根目录下新建hooks.py,写入以下代码:

from odoo import api, SUPERUSER_ID

def post_install_hook(cr, registry):
    env = api.Environment(cr, SUPERUSER_ID, {})
    # 存储需要跳转的视图XML ID,替换为你模块的目标视图ID
    env['ir.config_parameter'].set_param('ticket_booking.post_install_redirect', 'ticket_booking.view_ticket_booking_main')

def post_upgrade_hook(cr, registry):
    # 升级模块时同样设置标记
    env = api.Environment(cr, SUPERUSER_ID, {})
    env['ir.config_parameter'].set_param('ticket_booking.post_install_redirect', 'ticket_booking.view_ticket_booking_main')

步骤1-2:注册钩子到模块清单

修改模块的__manifest__.py,添加钩子注册:

{
    # ... 其他已有配置
    'post_init_hook': 'post_install_hook',
    'post_upgrade_hook': 'post_upgrade_hook',
}

2. 前端JS:检测标记并执行重定向

在Web客户端加载时检查后端设置的标记,若存在则跳转到指定视图,之后清除标记避免重复跳转。

步骤2-1:编写重定向JS文件

在模块的static/src/js目录下新建redirect_after_install.js:

odoo.define('ticket_booking.redirect_after_install', function (require) {
    "use strict";

    var core = require('web.core');
    var session = require('web.session');
    var ActionManager = require('web.ActionManager');

    ActionManager.include({
        init: function () {
            this._super.apply(this, arguments);
            this._checkRedirectFlag();
        },

        _checkRedirectFlag: function () {
            var self = this;
            // 请求后端获取重定向标记
            session.rpc('/web/session/get_session_parameter', {key: 'ticket_booking.post_install_redirect'})
                .then(function (view_id) {
                    if (view_id) {
                        // 执行跳转,替换res_model和view_mode为你的模块对应配置
                        self.do_action({
                            type: 'ir.actions.act_window',
                            res_model: 'ticket.booking',
                            view_mode: 'tree,form',
                            view_id: view_id,
                            target: 'current'
                        });
                        // 清除标记,防止重复跳转
                        session.rpc('/web/session/set_session_parameter', {key: 'ticket_booking.post_install_redirect', value: false});
                    }
                });
        }
    });

    return core;
});

步骤2-2:加载JS文件到后端资产

在模块的views目录下新建assets.xml,将JS文件注入到后端页面:

<odoo>
    <template id="assets_backend" name="ticket_booking assets" inherit_id="web.assets_backend">
        <xpath expr="." position="inside">
            <script type="text/javascript" src="/ticket_booking/static/src/js/redirect_after_install.js"/>
        </xpath>
    </template>
</odoo>

关键注意事项

  • 替换代码中的ticket_booking.view_ticket_booking_main为你模块实际的目标视图XML ID
  • 替换res_model: 'ticket.booking'为你模块对应的业务模型名称
  • 测试时,安装/升级模块后若未自动跳转,可手动刷新一次页面(JS会在页面加载时检测标记)

内容的提问来源于stack exchange,提问作者user20895058

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:10:13