實踐環境
Odoo 14.0-20221212 (Community Edition)
代碼實作
在js腳本函式中呼叫模型中自定義方法:
this._rpc({
model: 'demo.wizard', // 模型名稱,即模型類定義中 _name 的值
method: 'action_select_records_via_checkbox', // 模型中自定義名稱
args: ['arg_value'] // 傳遞給模型方法引數串列,串列中每個元素對應模型方法的一個位置引數
}).then(function (res) { // res為模型方法回傳值
console.log(res);
// do something
});
模型方法定義
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from odoo import models,fields,api
class DemoWizard(models.TransientModel):
_name = 'demo.wizard'
_description = 'demo wizard'
#...此處代碼已省略
@api.model
def action_select_records_via_checkbox(self, *args):
'''通過wizard視窗界面復選框選取記錄時觸發的操作
@params: args 為tuple元組,如果方法不采用位置引數,則傳遞的是啥,引數就是啥
'''
# do something
return True
注意:this._rpc函式不能在非普通函式中使用,其使用范圍可參考以下示例
odoo.define('estate.ListRenderer', function (require) {
"use strict";
var ListRenderer = require('web.ListRenderer');
ListRenderer = ListRenderer.extend({
_onToggleCheckbox: function (ev) {
//// ...此處代碼已省略
this._rpc({
model: this.modelName,
method: this.modelMethod,
args: [this.recordsSelected]
}).then(function (res) {
// ...此處代碼已省略
});
...
this._super.apply(this, arguments);
}
});
// ...此處代碼已省略
});
那問題來了,如果希望在普通的javascript函式中使用上述請求功能,咋辦?參考如下示例代碼
示例代碼
function do_confirm_action(modelName, modelMethod){
$("button[name='action_confirm']").attr("disabled", true);
var wizard_dialog = $(event.currentTarget.offsetParent.parentElement.parentElement);
var dataUUID = $(event.currentTarget.parentElement.parentElement.parentElement.parentElement).find('div.o_list_view').prop('id');
var rpc = odoo.__DEBUG__.services['web.rpc'];
rpc.query({
model: modelName,
method: modelMethod,
args: [JSON.parse(window.sessionStorage.getItem(dataUUID) || '{}')]
}).then(function (res) {
if (res == true) {
wizard_dialog.css('display', 'none');
window.sessionStorage.removeItem(dataUUID);
} else {
$("button[name='action_confirm']").attr("disabled", false);
}
}).catch(function (err) {
$("button[name='action_confirm']").attr("disabled", false);
});
}
作者:授客
微信/QQ:1033553122
全國軟體測驗QQ交流群:7156436
Git地址:https://gitee.com/ishouke
友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!
作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額隨意,您的支持將是我繼續創作的源動力,打賞后如有任何疑問,請聯系我!!!
微信打賞
支付寶打賞 全國軟體測驗交流QQ群
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/544325.html
標籤:Python
