Oejia 技术栈
首页
应用市场
方案
OE学院
分享
关于
编辑器
登录
Odoo 增加树形列表视图的支持
admin
on 2022-12-29
定义抽象基类模型 ``` class TreeModel(models.AbstractModel): _name = 'ext.tree' _description = u'树表' _field_parent = None @api.model def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None): records = super(TreeModel, self).search_read(domain, fields, offset, limit, order) m_dict = {} path_dict = {} for r in records: m_dict[r['id']] = r def get_path(node,id_path=None): _id = node['id'] if _id in path_dict: return path_dict[_id] path = [] if self._field_parent in node and node[self._field_parent]: p_id = node[self._field_parent][0] p_node = m_dict.get(p_id,None) if p_node: p_path = get_path(p_node) path = p_path + [str(_id)] else: path = [] else: path = [str(_id)] path_dict[_id] = path return path for r in records: r['__path'] = ','.join( get_path(r) ) records.sort(key=lambda x: x['__path'])#(cmp=lambda x,y:cmp(x['__path'],y['__path'])) return records ``` 模型使用示例 ``` class HrDepartment(models.Model): _name = 'hr.department' _inherit = ['hr.department', 'ext.tree'] _field_parent = 'parent_id' ``` 前端扩展 ``` <odoo> <data> <template id="assets_backend" name="base extension assets" inherit_id="web.assets_backend"> <xpath expr="." position="inside"> <link rel="stylesheet" type="text/css" href="/oejia_ext/static/lib/jquery.treegrid/css/jquery.treegrid.css"/> <script type="text/javascript" src="/base_ext/static/src/js/list_renderer.js"/> <script type="text/javascript" src="/oejia_ext/static/lib/jquery.treegrid/js/jquery.treegrid.js"></script> <script type="text/javascript" src="/oejia_ext/static/lib/jquery.treegrid/js/jquery.treegrid.bootstrap3.js"></script> </xpath> </template> </data> </odoo> ``` list_renderer.js 关键内容 ``` odoo.define('base_ext.list_render', function (require) { "use strict"; var core = require('web.core'); var ListRenderer = require('web.ListRenderer'); ListRenderer.include({ _onRowClicked: function (event) { if ('no_row_click' in this.state.context){ }else{ this._super.apply(this, arguments); } }, init: function (parent, state, params) { this._super.apply(this, arguments); this.hasSelectors = false; }, _renderRow: function (record) { var $tr = this._super.apply(this, arguments); if ('field_parent' in this.state.context){ var field_parent = this.state.context.field_parent; var parent_id = null; if(record.data[field_parent]){ parent_id = record.data[field_parent].res_id; } $tr.addClass('treegrid-' + record.data.id); if(parent_id){ $tr.addClass('treegrid-parent-' + parent_id); } } return $tr; }, _renderView: function () { var res = this._super.apply(this, arguments); if ('field_parent' in this.state.context){ this.$el.find('.o_list_view').treegrid({ treeColumn: 0, expanderExpandedClass: 'fa fa-chevron-down', expanderCollapsedClass: 'fa fa-chevron-right' }); } return res; } }); return ListRenderer; }); ```
Information
Odoo 增加树形列表视图的支持
http://www.oejia.net/article/4314d33cf6434fa5996658502627b86b
http://www.oejia.net/raw/4314d33cf6434fa5996658502627b86b
admin
on 2022-12-29
Category
Odoo
Related
2018-10-25 :
calluu
2018-03-15 :
在 YouMd 中使用链接跳转的三种方式
2021-08-31 :
微信模块 Oejia_wx v0.6.5 发布,更灵活强大的自定义回复功能实现各类自助交互查询业务
2025-04-22 :
AI互动积累
2016-01-19 :
Odoo 数据的增/删/改/查(CRUD)操作 API 解析及示例
2020-06-29 :
Odoo仓库模块实现公司多个仓库间调拨和入库确认
2018-10-24 :
微信模块 Oejia_wx v0.5.4 发布,增加小程序客服聊天支持,支持 Odoo12
2018-04-24 :
DjangoX v0.5 发布,支持Python3的强大灵活后台系统
2016-04-20 :
怎么安装 yum 环境
2020-09-30 :
Odoo 小程序商城模块 Oejia_weshop v0.2.2 发布,全面支持多公司销售机制
官方订阅号
关注订阅实时了解我们更多分享
分类
(20)
Django (3)
DjangoX (13)
JS (2)
Nginx (1)
Odoo (136)
Python (1)
YouMd (3)
公告说明 (2)
前端 (2)
后端HTTP (7)
异常处理 (1)
桌面UI (1)
移动开发 (4)
About This Entry
Odoo 让 server action 显示到指定的视图上
Odoo 16 正式发布时间
About This Blog
main index
to find recently
archives
to find all
标签
微信模块发布记录
微信模块
小程序商城
Web
Http
客服系统
HTML5
OE商城
审批OA
Markdown
DjangoX
md
解析
PyQT
markdown
示例
YouPBX
Python
服系统
Excel
oeshop
最近发布
Odoo商城模块 Oejia_weshop v1.4 发布,增加内部采购商城场景的支持!
Odoo商城模块 Oejia_weshop v1.3 发布,增加中英多语言支持及客户子账号模式!
OSError [Errno 5] Input/output error 异常处理
Odoo context 的常见使用示例
Odoo 符合国人菜单导航习惯的后台主题,支持最新的Odoo17、16等版本,支持企业版!
Odoo 官方应用市场开启 Odoo17 应用的发布!增加了行业应用专栏
Odoo商城模块 Oejia_weshop v1.2 发布,多商户、分销增强,增加商家端!
处理 Error Failed to download metadata for repo ‘appstream‘ Cannot prepare internal mirrorlist
Odoo 16 关键变化 change the term "acquirer" to "provider"
Friend Links
Oejia技术梦博客分享
YouMd,爱上MarkDown
Mole轻量级wsgi架子