Odoo4 tree视图左上角新增Button
# 一、直接在tree根元素中新增。这种有个限制就是必须要勾选一或多条记录的时候按钮才会显示 <tree> <header> <button type="object" class="btn-primary" name="tests" icon="fa-whatsapp" string="Import Part"/> </header> </tree> # 然后在编写处理方法 @api.model def tests(self, select_ids): pass # 二、如果你要按钮一直显示的话 # 1.tree_button_template.xml <?xml version="1.0" encoding="UTF-8"?> <templates id="sync_import_base_partinfo" xml:space="preserve"> <t t-extend="ListView.buttons"> <t t-jquery=".o_list_buttons" t-operation="append"> <!-- 找到名为 "shipyard.parttype"的模型,并在它的列表(tree)视图后面append一个按钮 --> <t t-if="widget and widget.modelName == 'shipyard.parttype'"> <!--btn表示按钮,btn-sm小按钮,btn-default默认按钮,btn-primary主要按钮?--> <button class="btn btn-primary o_list_tender_bt_sync_equip" type="button">Sync Import</button> </t> </t> </t> </templates> # 2.tree_button.js odoo.define('shipyard_parttype.list_sync_import_base_partinfo_button_create', function (require) { "use strict"; var ListView = require('web.ListView'); var viewRegistry = require('web.view_registry'); var ListController = require('web.ListController'); ListController.include({ renderButtons: function ($node) { this._super.apply(this, arguments); if (this.$buttons) { # .o_list_tender_bt_sync_equip该选择器是上边template中的 this.$buttons.on('click', '.o_list_tender_bt_sync_equip', this._sync_import_base_partinfo.bind(this)); } }, _sync_import_base_partinfo: function () { var self = this; var records = this.getSelectedIds(); self._rpc({ # rpc不明白可以往上翻其他小节 model: 'shipyard.parttype', # 模块 method: 'import_partitem', # 调用的方法 args: [records] }, [] ); } }); }) ; # 3.定义python处理 @api.model def import_partitem(self, pids): # pids为tree列表中勾选记录的id列表 pass # 4.将js和xml加入到资源中去 <template id="assets_end" inherit_id="web.assets_backend"> <xpath expr="." position="inside"> <script src="/ship_manage/static/src/js/tree_button.js" type="text/javascript" /> </xpath> </template> 'qweb': [ # __manifase__.py中 'static/src/xml/tree_button_template.xml', ],
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?