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-04-28 :
呼叫平台接口文档
2021-01-29 :
如何实现 Odoo 数据每天备份到Amazon S3存储
2016-01-25 :
DjangoX 入口启动脚本简析
2021-02-18 :
Odoo Website前台网站相关
2016-01-17 :
EXTJS布局示例(panel,Viewport,TabPanel)
2019-11-15 :
Odoo 小程序商城模板消息通知使用说明
2018-05-04 :
微信模块 Oejia_wx v0.5.1 发布,优化聊天会话缓存及多db模式的支持
2017-02-15 :
关于 Odoo 的模板引擎 Qweb
2022-12-30 :
企业微信错误码:60020 的处理
2023-03-10 :
Odoo生产环境需要注意或修改的一些关键配置项
官方订阅号
关注订阅实时了解我们更多分享
分类
(20)
Django (3)
DjangoX (13)
JS (2)
Nginx (1)
Odoo (134)
Python (1)
YouMd (3)
公告说明 (2)
前端 (2)
后端HTTP (7)
异常处理 (1)
桌面UI (1)
移动开发 (4)
About This Entry
企业微信错误码:60020 的处理
Odoo 让 server action 显示到指定的视图上
About This Blog
main index
to find recently
archives
to find all
标签
微信模块发布记录
微信模块
小程序商城
Web
Http
客服系统
审批OA
OE商城
HTML5
Markdown
DjangoX
oeshop
Excel
PyQT
md
Python
解析
YouPBX
服系统
示例
markdown
最近发布
Odoo 微信小程序商城模块 Oejia_weshop v0.1.1 发布
Oejia_wx v0.4.0 发布,支持 Odoo10 的微信模块
DjangoX App 配置和菜单组设置介绍
Odoo 微信小程序商城模块 Oejia_weshop 常见问题处理
微信模块 Oejia_wx v0.5.8 发布,多会话客服消息支持及素材图文方面增强
Odoo 低版本升级到 Odoo15 的处理集锦
Odoo商城模块 Oejia_weshop v1.0.1 发布,统一强大的后台多种客户端支持
钉钉消息通知及审批功能的使用说明
新版开启2016年新篇章
Friend Links
Oejia技术梦博客分享
YouMd,爱上MarkDown
Mole轻量级wsgi架子