zoukankan      html  css  js  c++  java
  • openerp js调用Python类方法

    转自:http://blog.csdn.net/kuaileboy1989/article/details/42875497

    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实例。它将合并所有上下文信息,再发送到服务器。

  • 相关阅读:
    对象池使用时要注意几点
    Flash3D学习计划(一)——3D渲染的一般管线流程
    714. Best Time to Buy and Sell Stock with Transaction Fee
    712. Minimum ASCII Delete Sum for Two Strings
    647. Palindromic Substrings(马拉车算法)
    413. Arithmetic Slices
    877. Stone Game
    338. Counting Bits
    303. Range Sum Query
    198. House Robber
  • 原文地址:https://www.cnblogs.com/chjbbs/p/5283842.html
Copyright © 2011-2022 走看看