爲了編輯方便,客戶會經常要求 odoo 打開form 視圖
默認爲編輯狀態 或者根據某些條件 爲編輯狀態
下面介紹兩種方式進行
1、在form 初始化加載時進行攔截,設置屬性打開編輯狀態
FormView.include({
/***
* ,滿足條件,form 視圖打開時默認編輯
*/
init: function (parent, dataset, views, flags, options) {
var self = this;
var index = dataset.index;
var row_id = dataset.ids[index];
var res_model = '';
if (flags && flags.action) {
res_model = flags.action.res_model;
}
if (res_model && row_id) {
var clicks = new Model(res_model);
clicks.call('check_is_true', [res_model, row_id]).done(function (message) {
if (message) {
flags.initial_mode = 'edit';
flags.form = {'action_buttons': true, 'options': {'mode': 'edit'}};
}
});
}
self._super.apply(self, arguments);
}
});
2、在用戶點擊 行 時,進行攔截,然後判斷增加屬性 再跳轉
ListView.List.include({
row_clicked: function (e) {
var self = this;
var index = self.dataset.index;
var row_id = self.dataset.ids[index];
var res_model;
var result = this._super.apply.bind(this._super, this, arguments);
if (self.options.action) {
res_model = self.options.action.res_model;
} else {
return result();
}
var clicks = new Model(res_model);
return clicks.call('check_is_true', [res_model, row_id]).done(function (message) {
if (message) {
var action = {
'type': 'ir.actions.act_window',
'res_model': self.options.action.res_model,
'res_id': row_id,
'views': [self.options.action.views[1]],
'view_mode': self.options.action.view_mode,
'target': self.options.action.target,
'flags': {'form': {'action_buttons': true, 'options': {'mode': 'edit'}}},
};
if (row_id) {
return self.view.do_action(action);
}
} else {
return result();
}
});
}
});