openerp创建动态视图-fields_view_get
来源:互联网 发布:好看的男士手套知乎 编辑:程序博客网 时间:2024/05/21 14:55
openerp的视图结构是以XML的格式存放于ir.ui.view表中,属于静态格式,设计之后就固定,
但可以通过在model中重写fields_view_get函数,在视图加载时修改arch属性,动态修改视图的结构
def fields_view_get(self, cr, uid, view_id=None,view_type='form',context=None,toolbar=False,submenu=False): ip_obj = self.pool.get('hr.rule.input') res = super(hr_inputs_editor,self).fields_view_get(cr,uid,view_id,view_type,context,toolbar,submenu) if view_type=='form': treev = res['fields']['line_ids']['views']['tree'] doc = etree.XML(treev['arch']) for node in doc.xpath("/tree/field"): name = node.get('name',False) if name.startswith('value'): name = name.replace('value','input') + '_code' cd = context.has_key(name) and context[name] or False if cd: ip_ids = ip_obj.search(cr,uid,[('code','=',cd)],limit=1,context=context) if ip_ids: text = ip_obj.read(cr,uid,ip_ids,['name'])[0]['name'] node.set('string',text) else: node.set('modifiers','{"tree_invisible":true}') treev['arch'] = etree.tostring(doc) return res
注意,必须是通过etree将res['arch']加载到DOM中,通过xpath查找并set修改属性,然后将修改后的dom通过etree.tostring(doc)写回res['arch']
如果要修改一对多字段下的子视图时,需要先运算到子视图,如:
treev = res['fields']['line_ids']['views']['tree']
- openerp创建动态视图-fields_view_get
- 动态创建视图
- 动态创建视图窗口
- 动态创建视图
- 动态创建ImageView视图
- 动态创建视图窗口
- OpenERP-指定动作视图
- openerp视图继承
- 视图类动态创建视图窗口
- 创建动态结果的视图
- OpenERP-指定关系域视图
- Odoo(OpenERP )视图继承总结
- sql 创建动态视图,动态列
- 动态创建视图时候 AfxCheckDialogTemplate执行出错
- 动态创建视图时候 AfxCheckDialogTemplate执行出错
- SQL 存储过程动态创建视图
- ORACLE 存储过程动态创建视图
- OpenERP-设置列表视图强制不换行
- Android 中常见Bitmap操作
- 树状数组 POJ 2352 Star
- 获取Android手机中所有的短信
- 词组缩写 2564
- combotree异步加载 combotree点击加载
- openerp创建动态视图-fields_view_get
- 数据结构与算法分析学习笔记二-栈的C语言实现
- jsp统计当前在线人员
- jQuery.extend 函数详解
- Linux服务器故障排查
- java文件操作
- switch代替if else实现学生成绩等级的判定,switch实现域的判定
- 升级后的bootstrap3的navbar-brand、navbar-collapse、navbar-toggle、navbar-header、navbar-text、navbar-btn的小实验
- C语言动态内存分配