Odoo中的env详解

转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826382.html

一:environment

    environment类提供了对ORM对象的封装,同时提供了:

    1)注册类的访问:对于继承Model类来说可以直接通过self.env对environment进行操作。

    2)记录集的缓存:清除缓存可以使用environment对象的invalidate_all()方法进行。  

    3)管理重计算的数据结构。  

二:env的属性列表

1.user:返回当前用户  
    self.env.user  
2.lang:返回当前语言代码  
    self.env.lang  
3.in_draft:返回是否处于草稿状态  
    self.env.in_draft  
4.in_onchange:返回是否处于on_change草稿模式  
    self.env.in_onchange  
另外还有cr,registery,cache,prefetch,computed,dirty,todo,mode,all等,有待一一探究。

 

三:env中属性的使用


self.env.cr 或者 self._cr是数据库游标对象,通常用于查询数据库
self.env.uid或者self._uid是当前用户的数据库ID
self.env.user是当前用户记录
self.env.ref(xml_id)返回XML ID对应的记录
self.env[model_name]返回给定模型的实例
 

四:更改context

    1:.sudo().XXX:使用现有数据集以超级权限运行环境来执行XXX操作。

    2:self.with_context({key:val}):可用于替换当前运行环境的context

    3:with_env() :完整替换当前运行环境

原文地址:https://www.cnblogs.com/ygj0930/p/10826382.html