gpt4 book ai didi

odoo - 如何在 TreeView 标题中创建一个按钮(在创建和导入按钮旁边)并为其提供功能?在奥多 9

转载 作者:行者123 更新时间:2023-12-02 16:59:55 25 4
gpt4 key购买 nike

我正在尝试在销售订单模块的 TreeView 中添加一个按钮,位于创建导入按钮旁边。该按钮将执行一个 python 方法。

我已经创建了自定义模块,扩展了销售订单模块,然后,我按照以下步骤操作:

第 1 步: 在 my_module/static/src/xml/qweb.xml 中创建按钮:

<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-extend="ListView.buttons">
<t t-jquery="button.o_list_button_add" t-operation="after">
<t t-if="widget.model=='sale.order'">
<button class="btn btn-sm btn-primary update_sales_button" type="button">Run my stuff</button>
</t>
</t>
</t>
</templates>

第 2 步: 将文件添加到我的模块的 __openerp.py__ 中的 qweb 部分:

'depends': ['sale'],
'data': [],
'qweb': ['static/src/xml/qweb.xml'],

现在,按钮出现。

第 3 步: 创建 python 方法,为 my_module/my_python_file.py 中的按钮提供功能:

from openerp import api, fields, models, _

class SaleOrderExtended(models.Model):
_inherit = ['sale.order']

@api.multi
def update_sales_button(self):
...

注意: python 方法已经在 odoo 之外进行了测试并且工作正常。

如何将此 python 方法与按钮链接?

最佳答案

您需要扩展“ListView”小部件,添加点击监听器。还要将 '@api.model' 装饰器添加到您的方法中,以便您可以使用 'call' 方法从 js 调用它。像这样的事情:

ListView = require('web.ListView')

ListView.include({
render_buttons: function() {

// GET BUTTON REFERENCE
this._super.apply(this, arguments)
if (this.$buttons) {
var btn = this.$buttons.find('.update_sales_button')
}

// PERFORM THE ACTION
btn.on('click', this.proxy('do_new_button'))

},
do_new_button: function() {

instance.web.Model('sale.order')
.call('update_sale_button', [[]])
.done(function(result) {
< do your stuff, if you don't need to do anything remove the 'done' function >
})
})

关于odoo - 如何在 TreeView 标题中创建一个按钮(在创建和导入按钮旁边)并为其提供功能?在奥多 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43321525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com