Odoo tree视图按钮添加

本文档介绍了如何在Odoo中创建一个继承自ListView的QWeb模板,添加自定义按钮,并通过JS处理按钮点击事件调用模型方法。首先在qweb.xml文件中定义模板,然后在manifest.py加载模板,接着编写JS代码处理按钮点击事件,调用test.management模型的action_to_test方法。最后,在web_asset.xml文件中加载JS,并在manifest.py中引入。整个过程详细阐述了Odoo中视图和控制器的自定义扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、继承ListView Qweb模板

创建一个qweb模块,继承ListView,保存在 static/xml/qweb.xml文件中,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<templates id="sync_template" xml:space="preserve">

  <t t-extend="ListView.buttons">

    <t t-jquery=".o_list_buttons" t-operation="append">

      <t t-if="widget and widget.modelName == 'test.management'">

        <button class="btn btn-sm btn-default btn-primary list_tender_button_create" type="button"

                style="background-color: #006d6b;color: #FFF;">测试按钮</button>

      </t>

    </t>

 </t>

</templates>

2、载入上一步的qweb模板

在_____manifest___.py 文件中载入qweb模板文件:

"qweb":["static/src/xml/qweb.xml",],

3、创建JS处理代码

创建一个js文件,实现按钮的onclick事件,保存为文件 static/src/js/tree_view_button.js,内容如下:

odoo.define('ticket_management.list_tender_button_create', function (require) {

    "use strict";

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

    ListController.include({

        renderButtons: function ($node) {

            this._super.apply(this, arguments);

            if (this.$buttons) {

                this.$buttons.on('click', '.list_tender_button_create', this._invitation_to_button.bind(this));

            }

        },

        _invitation_to_button: function () {

            var self = this;

            var records = this.getSelectedIds();

            self._rpc({

                model: 'test.management',

                method: 'action_to_test',

                // args: [records]

            }, [])

            // .done(function () {

            //     self._after_invitation()

            // });

        },

        // _after_invitation: function () {

        //     this.do_notify(_t("Invitation or Reset Password"), _t("Successfully completed"));

        // },

    });

});

4、创建文件view/web_asset.xml,里面载入上一步创建的js文件:

<?xml version="1.0" encoding="utf-8"?>

<odoo>

    <template id="assets_backend" name="tree view menu" inherit_id="web.assets_backend">

        <xpath expr="." position="inside">

            <script type="text/javascript" src="/ticket_management/static/src/js/tree_view_button.js"></script>

        </xpath>

    </template>

</odoo>

5、在manifest.py文件中载入 view/asset.xml文件:

"data": ["view/web_asset.xml",],

6、在模型py文件里写的函数:

class TestManagement(models.Model):
    _name = 'test.management'
    
    @api.model
    def action_to_test(self):
        "编写代码"
        pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值