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() :完整替换当前运行环境