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

Odoo 16项目模块看板示例修改:自定义Registry不知如何使用

Odoo 16 自定义项目看板示例Registry使用指南

核心问题解决思路

你已经完成了自定义看板示例的Registry注册,现在需要让项目模块的看板组件正确加载并识别这个Registry,关键在于完成JS文件的模块加载配置、示例与项目模型的绑定,以及必要时的组件继承调整。


步骤1:确保自定义JS文件被模块加载

在你的自定义模块__manifest__.py中,将JS文件添加到后端资源列表,让Odoo在加载后台页面时自动引入:

'assets': {
    'web.assets_backend': [
        'restructure_inherit_views/static/src/js/your_kanban_example.js',
    ],
},

替换your_kanban_example.js为你的实际JS文件名,保证文件路径与模块内的静态资源结构一致。


步骤2:绑定示例到项目任务模型

Odoo的看板示例会根据当前视图的模型自动匹配,你需要在示例数据中添加model字段,明确关联project.task模型:

const exampleData = {
    model: 'project.task', // 新增该行,绑定到项目任务模型
    ghostColumns: [_lt("New"), _lt("Assigned"), _lt("In Progress"), _lt("Done"), ],
    applyExamplesText: _lt("Use This For My Project"),
    allowedGroupBys: ["stage_id"],
    examples: [{
        name: _lt("New Custom Example"),
        columns: [_lt("Brainstorm"), _lt("Research"), _lt("Draft"), _lt("Final Document"), ],
        get description() {
            return renderToMarkup("project.example.researchproject");
        },
        bullets: [greenBullet, redBullet],
    }, ],
};

完成此配置后,打开项目任务看板时,系统会自动加载该模型关联的看板示例。


步骤3:(可选)继承看板控制器自定义示例逻辑

如果需要替换原有项目看板示例,或者合并自定义示例与原有示例,可继承项目看板控制器并重写示例获取方法:

odoo.define("restructure_inherit_views.extend_project_kanban", function(require) {
    "use strict";
    const registry = require('@web/core/registry');
    const projectKanbanController = registry.category('controllers').get('project.kanban');

    const CustomProjectKanbanController = projectKanbanController.extend({
        async _getKanbanExamples() {
            // 获取自定义示例
            const customExample = registry.category('kanban_examples').get('custom_project');
            // 直接返回自定义示例(替换原有)
            return [customExample];
            // 若需合并原有示例,取消下方注释:
            // const originalExamples = await this._super(...arguments);
            // return [...originalExamples, customExample];
        },
    });

    // 覆盖原有项目看板控制器
    registry.category('controllers').add('project.kanban', CustomProjectKanbanController, {force: true});
});

验证与测试

  1. 升级你的自定义模块
  2. 打开任意项目的任务看板,点击右上角的「示例」按钮(若看板已有数据,可暂时清空或切换视图后重新打开)
  3. 检查是否出现「New Custom Example」选项,点击后验证看板列是否按配置更新

注意事项

  • 确保project.example.researchproject对应的QWeb模板存在,可在模块static/src/xml目录下创建模板文件,并在__manifest__.py的qweb字段中添加模板路径
  • 使用控制器继承时,force: true参数会覆盖原有控制器逻辑,若需保留原有功能,务必调用_super方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:17:19