如何针对特定模型始终以“编辑”模式打开表单

时间:2019-05-29 03:56:34

标签: javascript odoo odoo-11 odoo-view

我有一个模型说'my.attendance',也有一个表单视图,其中包含一些出勤细节。我需要的是当我打开此表单视图时,它应该始终以编辑模式打开,因此我可以直接输入无需每次单击“编辑”按钮即可出席。

1 个答案:

答案 0 :(得分:1)

您必须扩展ViewManager来实现此目的。

odoo.define('my_module.view_manager', function (require) {
"use strict";

var ViewManager = require('web.ViewManager');

ViewManager.include({

    custom_events: {

        execute_action: function(event) {
            var data = event.data;
            this.do_execute_action(data.action_data, data.env, data.on_closed)
                .then(data.on_success, data.on_fail);
        },
        search: function(event) {
            var d = event.data;
            _.extend(this.env, this._process_search_data(d.domains, d.contexts, d.groupbys));
            this.active_view.controller.reload(_.extend({offset: 0}, this.env));
        },
        switch_view: function(event) {
            if ('res_id' in event.data) {
                this.env.currentId = event.data.res_id;
            }
            var options = {};
            console.log(event.data)
            if (event.data.view_type === 'form' && !this.env.currentId) {
                options.mode = 'edit';
            } else if (event.data.mode) {
                options.mode = event.data.mode;
            }

            // Extra added code
            if (event.data.model){    
                if (event.data.model == 'my.model'){  // Checking the particular model.
                    options.mode = 'edit';
                }
            }


            this.switch_mode(event.data.view_type, options);
        },
        env_updated: function(event) {
            _.extend(this.env, event.data);
        },
        push_state: function(event) {
            this.do_push_state(event.data);
        },
        get_controller_context: '_onGetControllerContext',
        switch_to_previous_view: '_onSwitchToPreviousView',
    },

 });
});
相关问题