美文网首页
Odoo 随笔

Odoo 随笔

作者: PigPIgAutumn | 来源:发表于2017-10-12 11:41 被阅读0次

    1.default关键字:

    当将函数赋值给default关键字时,函数的参数self并不指代当前操作的记录,简单来说,就是这个self跟当前新建的记录(record)没有任何关系。但该self仍然是一个odoo对象,可以通过它使用env找到其他模型,获取其他模型的数据
    例子:

    def _get_company_hot_line(self):
    
    """获取所属公司客服热线作为默认值"""
    
    return self.env.user.company_id.hot_line
    

    self虽然与当前记录无关,但可以用self.env.user找到当前登录的user模型,并通过其company_id(这是一个many2one字段,指向0个或1个记录),获取hot_line字段的值

    2.context:

    Odoo中的context相当于全局变量,可以使函数不通过参数传值,而使用一些默认的变量
    但,Odoo中的context有一个坑:

    • 调用函数时,self._context是Odoo里面的frozendict类型,不允许直接修改context的值

    所以,实际上,如果发现函数调用时,context中有我们不想用的数据,那就需要新创建一个context,具体做法如下:

    ctx = self._context 
    self.with_context(ctx).your_function() # 用例1
    super(yourClass,self.with_contex(ctx)).your_function() # 用例2
    

    相关文章

      网友评论

          本文标题:Odoo 随笔

          本文链接:https://www.haomeiwen.com/subject/xcunyxtx.html