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也走完了,但效果就是出不来,第二天我们头儿才帮我找到这个问题。
把这个分享出去,好让更多的人,少废点脑细胞。
posted @ 2018-03-26 09:16  生活不易23  阅读(2527)  评论(0编辑  收藏  举报