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

使用oe_kanban_global_click时如何点击看板卡片跳转至树视图

修改Odoo看板卡片跳转视图的方法

针对你提到的两个问题——如何通过oe_kanban_global_click链接到其他视图,以及默认跳表单视图改为树视图,我给你两种实用的解决方案:

方法一:自定义点击事件(推荐,不影响其他看板)

默认的oe_kanban_global_click是Odoo内置的触发表单跳转的类,我们可以移除它,换成自定义的点击逻辑:

1. 修改看板模板

把原模板中的oe_kanban_global_click替换成自定义类(比如custom-kanban-click),同时绑定记录ID到数据属性:

<templates>
  <t t-name="kanban-box">
    <!-- 移除oe_kanban_global_click,添加custom-kanban-click和data-id -->
    <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card custom-kanban-click" 
         t-att-data-id="record.id.raw_value">
      <div class="o_kanban_record_bottom">
        <div class="oe_kanban_bottom_left">
          <span><strong>Weather:&nbsp;</strong><t t-esc="record.weather.raw_value"/></span>
        </div>
      </div>
      <!-- 其他看板内容 -->
    </div>
  </t>
</templates>

2. 编写JS绑定点击事件

创建一个JS文件,继承看板组件并自定义点击行为,这里以跳转到树视图为例:

odoo.define('your_module.custom_kanban_click', function(require) {
    "use strict";

    var KanbanRecord = require('web.KanbanRecord');

    KanbanRecord.include({
        // 扩展事件绑定
        events: _.extend({}, KanbanRecord.prototype.events, {
            'click .custom-kanban-click': '_onCustomKanbanClick',
        }),

        _onCustomKanbanClick: function(e) {
            e.stopPropagation();
            // 替换成你的模型名,比如'your.model.name'
            const modelName = 'res.partner';
            const recordId = parseInt($(e.currentTarget).data('id'));
            
            // 触发跳转动作
            this.do_action({
                type: 'ir.actions.act_window',
                res_model: modelName,
                views: [[false, 'tree']], // 指定树视图,false表示用默认树视图
                domain: [['id', '=', recordId]], // 过滤当前记录,不需要可以删除此行
                target: 'current', // 当前标签页打开,可选'new'新开标签
            });
        },
    });

    return KanbanRecord;
});

3. 配置资源引入

在模块的__manifest__.py中引入这个JS文件:

{
    'name': 'Your Module',
    'version': '1.0',
    'depends': ['web'],
    'data': [
        'views/your_kanban_view.xml',
    ],
    'assets': {
        'web.assets_backend': [
            'your_module/static/src/js/custom_kanban.js',
        ],
    },
}

方法二:覆盖默认的_onGlobalClick方法

如果你想保留oe_kanban_global_click类,直接修改它的默认行为,可以覆盖看板组件的_onGlobalClick方法:

odoo.define('your_module.override_global_click', function(require) {
    "use strict";

    var KanbanRecord = require('web.KanbanRecord');

    KanbanRecord.include({
        _onGlobalClick: function(e) {
            e.stopPropagation();
            // 只针对指定模型修改行为,避免影响其他看板
            if (this.modelName === 'your.model.name') {
                this.do_action({
                    type: 'ir.actions.act_window',
                    res_model: this.modelName,
                    views: [[false, 'tree']], // 跳转树视图
                    domain: [['id', '=', this.record.id.raw_value]],
                    target: 'current',
                });
            } else {
                // 其他模型保留默认跳转表单的行为
                this._super.apply(this, arguments);
            }
        },
    });

    return KanbanRecord;
});

通用跳转其他视图的方法

如果要跳转到日历视图、看板视图或自定义视图,只需要修改views参数:

  • 跳日历视图:views: [[false, 'calendar']]
  • 跳自定义表单视图(指定视图ID):views: [[123, 'form']](123是目标视图的数据库ID)
  • 打开无过滤的树视图:删除domain参数,或者设为domain: []

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:22:51