odoo中页面跳转相关
在添加自定义服务器动作 “复制全部”后发现直接创建了新的记录,并且直接进入到form保存完的状态。
如何解决:
if yourself_obj_copy: return { 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'form', 'res_model': '你的模块名.模型名', 'res_id': yourself_obj_copy.id, 'context': self.env.context, 'flags': {'initial_mode': 'edit'}, }
加上上方红色部分,就可以默认进入form视图的编辑状态。
这里需要注意一下:odoo自带的服务器动作 -- 复制 其实也不是复制,而是创建了一份新的直接保存了,
即使你点击复制进入新的编辑界面,这时不点“保存”,直接“丢弃”,其实是没有效果的,这条记录已经在点击“复制”的时候创建了。
页面跳转可以参考如下文章:
在odoo视图中有时点击按钮需要跳转到另一个视图,此时有如下参数需要注意
系统的默认值:
_defaults = { 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'tree,form', 'context': '{}', 'limit': 80, 'target': 'current', 'auto_refresh': 0, 'auto_search':True, 'multi': False, }
# type: 动作类型,默认为ir.actions.act_window
# view_type: 跳转时打开的视图类型
# view_mode: 列出允许使用的视图模式
# context: 给目标视图传参数,如默认搜索之类的,如{‘search_default_group_assign’:1}
# limit: 列表视图一页的记录数
# target: 打开新视图的方式,current是在本视图打开,new是弹出一个窗口打开
# auto_refresh:为1时在视图中添加一个刷新功能
# auto_search:加载默认视图后,自动搜索
# multi:视图中有个更多按钮,若multi设为True, 更多按钮显示在tree视图,否则显示在form视图
以下内容是一些需特别注意的参数
# res_model:想打开视图的对应模块
# res_id: 参数为id,加载指定id的视图,但只在view_type为form时生效,若没有这个参数则会新建一条记录
# view_id: 参数是id,若一个模块有多于>1个视图时需要指定视图id,可根据视图名称去ir.ui.view模块搜索
# views:是(view_id,view_type) 元组对列表,第一组是动作默认打开的视图
# flags: 对视图面板进行一些设置,如{‘form’: {‘action_buttons’: True, ‘options’: {‘mode’: ‘edit’}}}即对form视图进行一些设置,action_buttons为True时调出编辑保存按钮,options’: {‘mode’: ‘edit’}时则打开时对默认状态为编辑状态
我参考的是 https://www.cnblogs.com/hellojesson/p/8405539.html
下面说下我在写这个东西时遇到的坑
def repair(self): view_id = self.env.ref('equipment.view_equipment_create_repair_form').id return {'type': 'ir.actions.act_window', 'view_type': 'form', "view_mode": "form", 'res_model': 'equipment.repair', 'target': 'new', # 'view_id': view_id, 'views': [[view_id, "form"]], 'context': {'form_view_ref': 'equipment.view_equipment_create_repair_form'}, } 这个是我复制别人的,但由于刚步入odoo中 习惯性在方法前写@api.one,所以代码好好的,debug也走完了,但效果就是出不来,第二天我们头儿才帮我找到这个问题。 把这个分享出去,好让更多的人,少废点脑细胞。