轉載請注明原文地址: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() :完整替換當前運行環境