一、environment
environment类提供了对ORM对象的封装,同时提供了:
1. 注册类的访问:对于继承Model类来说可以直接通过self.env对environment进行操作。
2. 记录集的缓存:清除缓存可以使用environment对象的invalidate_all()方法进行。
3. 管理重计算的数据结构。
二、env的属性列表
- user:返回当前用户ID
self.env.useruser_id = fields.Many2one('res.users', string='制单人', default=lambda self: self.env.user, readonly=True, )
- user:返回当前用户name
self.env.user.name
```
user_name = fields.Many2one(‘res.users’, string=‘制单人’, default=lambda self: self.env.user.name, readonly=True, ) - 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
- .sudo().XXX:使用现有数据集以超级权限运行环境来执行XXX操作。
- self.with_context({key:val}):可用于替换当前运行环境的context
- with_env() :完整替换当前运行环境
五 、设置过滤用户个人数据
代码块:增加标识颜色部分代码。
实现效果: