odoo跳转页面
odoo跳转页面总结
odoo视图跳转我总结为一下几点:
1. 默认的封装了两个数据,不需要人工维护
模型名称(封装到即将跳转的视图的context的active_model属性中)
单据id(封装到即将跳转的视图的context的active_id属性中)
2. 返回了一个字典(两大作用)
第一个作用:
各种参数的配置指定要跳转的模型,以及跳转之后模型可做的操作,就比如说显示不显示编辑保存按钮之类的。
第二个作用:
传入context,进行视图之间参数值的交互。
3. 在所跳转之后的视图接收数据并进行渲染
所以,第一步是系统默认,不需要写
第二步如下:
触发函数指定将要跳转的页面
一般情况下跳转视图的必要参数(当然,name属性非必要)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def jump_to_page( self ): # self.env.ref是获取xml的id view_id = self .env.ref( 'dy_stock.dy_picking_in_view_form' ). id _defaults = { 'name' : _( 'XXX单' ), # 可以写一些描述性的语言作为视图标题 'type' : 'ir.actions.act_window' , # 动作类型,默认为ir.actions.act_window 'view_type' : 'form' , # 跳转时打开的视图类型 'view_mode' : 'tree,form' , # 列出跳转过去允许使用的视图模式 'context' : '{' name ': self.name}' , # 给定的参数传递 'target' : 'current' , # 有两个参数,current是在当前视图打开,new是弹出一个窗口打开 'res_model' : 'stock.picking' , # 参考的模型名称 'res_id' : 'views_form' , # 加载指定id的视图,但只在view_type为form时生效,若没有这个参数则会新建一条记录 'view_id' : view_id, # 指定视图的id,如果一个模块只有一个视图的时候可以忽略不计,但建议最好写入 'views' : [(view_id, 'form' )], # 是一个(view_id,view_type) 的元组对列表,默认打开第一组的动作视图 } |
下面是我总结的基本上所有参数,可以查阅浏览
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | def jump_to_page( self ): # self.env.ref是获取xml的id view_id = self .env.ref( 'dy_stock.dy_picking_in_view_form' ). id _defaults = { 'name' : _( 'XXX单' ), # 可以写一些描述性的语言作为视图标题 'type' : 'ir.actions.act_window' , # 动作类型,默认为ir.actions.act_window 'view_type' : 'form' , # 跳转时打开的视图类型 'view_mode' : 'tree,form' , # 列出跳转过去允许使用的视图模式 'context' : { 'name' : self .name}, # 给定的参数传递 'limit' : 80 , # 如果是tree,指定一页所能显示的行数 'target' : 'current' , # 有两个参数,current是在当前视图打开,new是弹出一个窗口打开 'auto_refresh' : 0 , # 为1时在视图中添加一个刷新功能 'auto_search' : True , # 加载默认视图后,自动搜索 'multi' : False , # 视图中有个更多按钮时,若multi设为True, 按钮显示在tree视图,否则显示在form视图 'res_model' : 'stock.picking' , # 参考的模型名称 'res_id' : 'views_form' , # 加载指定id的视图,但只在view_type为form时生效,若没有这个参数则会新建一条记录 'view_id' : view_id, # 指定视图的id,如果一个模块只有一个视图的时候可以忽略不计,但建议最好写入 'views' : [(view_id, 'form' )], # 是一个(view_id,view_type) 的元组对列表,默认打开第一组的动作视图 'flags' : { 'initial_mode' : 'edit' }, # 对视图面板进行一些设置,如{'form': {'action_button': True, 'options': {'mode': 'edit'}}}即对form视图进行的一些设置,action_buttons为True时调出编辑保存按钮,options’: {‘mode’: ‘edit’}时则打开时对默认状态为编辑状态 } |
第三步如下:
前端接收一些必要的参数并进行渲染
取出其他参数的信息格式
1 | self .env.context.get( '参数名称' , False ) |
1 2 3 4 5 | def get_context_values( self ): active_model = self .env.context.get( 'active_model' , False ) # 获取跳转之前的视图模型 active_id = self .env.context.get( 'active_id' , False ) # 获取跳转之前的单据id if active_model and active_id: # 很显然,当有值的时候,说明是从其他页面跳转过来的 context_info = self .env[active_model].browse(active_id) # 取出跳转时传入的原视图的self信息 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
2019-03-07 python opencv 检测特定颜色
2019-03-07 Python+selenium点击网页上指定坐标