js調用.py文件中定義的類

js調用.py文件中定義的類

形式如下:

//創建product.product類

var prod_obj=new instance.web.Model("product.product")

//調用prod_obj中的方法

prod_obj.call("get_defult_data",[element_ids,self.view.model,context]).then(function(result) {


})

在創建類時還可以帶參數:

var mod = new instance.web.Model("account.move.line", context, domain);

詳解:

用於連接OpenERP models的類是 instance.web.Model 當你實例化它,必須以試圖連接的OpenERP model 名稱作爲第一個參數傳入構造函數。

call(name, args, kwargs) 是Model的方法,用來調用OpenERP的服務器端model中的任意方法。下面參數說明:

1)name 是要調用的model中方法的名稱。

2)args 是一個傳給方法的基於位置的參數列表。例:

def my_method2(self, cr, uid, a, b, c, context=None): ...

model.call("my_method", [1,2,3], ...

// 對應參數值:a=1,b=2,c=3

3)kwargs 是一個傳遞給函數的命名參數列表。例:

def my_method2(self, cr, uid, a, b, c, context=None): ...

model.call("my_method", [], {a: 1, b: 2, c: 3, ...

// 對應參數值:a=1,b=2,c=3

Context說明:

Context是個“神奇”參數,Web客戶端在調用服務端方法時,總是傳遞給服務端。context是一個包含多個key的dictionary。其中一個最重要的關鍵是用戶的語言,服務器用來翻譯應用程序的所有消息。另一個是用戶的時區,如果使用OpenERP位於不同國家,用來計算正確的日期和時間。

model.call("my_method", [], {context: new instance.web.CompoundContext()})

Context是所有方法中必須有的參數,因爲如果我們忘記了,可能會發生不好的事情(如應用程序沒有被正確翻譯)。這就是爲什麼,當你調用model的方法時,總需要給出這樣的參數。解決辦法是:使用類instance.web.CompoundContext。

CompoundContext這個類用來傳遞用戶上下文(語言,時區等)給服務器的,以及增加新的上下文key(某些model方法通過任意key添加到上下文中)。其構造函數的參數是任意數量的dictionary,或一個其他的CompoundContext實例。它將合併所有上下文信息,再發送到服務器。



轉自:http://odoodevelop.lofter.com/post/1cd05c40_41e42ff


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章