Odoo 使用do_action打开form视图,target为current时,直接到编辑界面

  今天遇到一个需求,在上篇博客中做的合并发货功能,点击合并发货按钮后到达物流单的form视图,此时的物流单为临时保存状态,需要用户对物流单上的物流数据进行补全。此时就需要用户再点击编辑按钮,进入编辑状态,对物流单所需要的数据进行编辑。但产品给出的需求是,生成物流单后,显示的界面就是临时保存的编辑状态界面,本来想反对的这么做的,因为以前没做过,需要修改框架的js才能做到那种效果。最终在产品的要求下,我尝试去修改。
经过努力,终于达到那需求的效果。在执行do_action打开物流单的form视图时,target设置为current,添加flags参数,设置为{'form':{'action_buttons':true, 'options':{'mode':'edit'}}}。整体代码如下:
self.do_action({
                        name: ctx['name'],
                        type: 'ir.actions.act_window',
                        res_model: 'logistics.bill',
                        view_mode: 'form',
                        view_type: 'form',
                        views: [[false, 'form']],
                        target: 'current',
                        res_id: res_id,
                        flags: {'form': {'action_buttons': true, 'options': {'mode': 'edit'}}},
                        context: ctx,
                        params: {
                            model: self.dataset.model,
                            // self.dataset.get_context() could be a compound?
                            // not sure. action's context should be evaluated
                            // so safer bet. Odd that timezone & al in it
                            // though
                            context: self.getParent().action.context,
                        }
                        }, {
                            on_reverse_breadcrumb: function () {
                                self.reload();
                            },
                            on_close: function () {
                                self.reload();
                            }
                        });




希望能对有此需求的同学有帮助!

你可能感兴趣的:(odoo)