一:environment
environment类提供了对ORM对象的封装,同时提供了:
1)注册类的访问:对于继承Model类来说可以直接通过self.env对environment进行操作。
2)记录集的缓存:清除缓存可以使用environment对象的invalidate_all()方法进行。
3)管理重计算的数据结构。
二:env的属性列表
- user:返回当前用户
self.env.user
- lang:返回当前语言代码
self.env.lang
- in_draft:返回是否处于草稿状态
self.env.in_draft
- 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
(Odoo----如何更新context)
1:.sudo().XXX
:使用现有数据集以超级权限运行环境来执行XXX操作。
2:self.with_context({key:val})
:可用于替换当前运行环境的context
3:with_env()
:完整替换当前运行环境