summaryrefslogtreecommitdiff
path: root/odoo/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'odoo/api.py')
-rw-r--r--odoo/api.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/odoo/api.py b/odoo/api.py
index dffbc0e633a..a415461296e 100644
--- a/odoo/api.py
+++ b/odoo/api.py
@@ -55,7 +55,7 @@ from weakref import WeakSet
from decorator import decorate, decorator
from werkzeug.local import Local, release_local
-from odoo.tools import frozendict, classproperty, StackMap
+from odoo.tools import frozendict, classproperty, StackMap, pycompat
from odoo.exceptions import CacheMiss
_logger = logging.getLogger(__name__)
@@ -1036,7 +1036,7 @@ class Cache(object):
""" Return the value of ``field`` for ``record``. """
key = record.env.cache_key(field)
try:
- value = self._data[key][field][record.id]
+ value = self._data[key][field][record._ids[0]]
except KeyError:
raise CacheMiss(record, field)
@@ -1045,7 +1045,12 @@ class Cache(object):
def set(self, record, field, value):
""" Set the value of ``field`` for ``record``. """
key = record.env.cache_key(field)
- self._data[key][field][record.id] = value
+ self._data[key][field][record._ids[0]] = value
+
+ def update(self, records, field, values):
+ """ Set the values of ``field`` for several ``records``. """
+ key = records.env.cache_key(field)
+ self._data[key][field].update(pycompat.izip(records._ids, values))
def remove(self, record, field):
""" Remove the value of ``field`` for ``record``. """