Odoo环境下如何写入数据库所有缓存?
How to write to database all cache in Odoo environment?
我正在做一个测试,我需要模仿 onchange 行为,所以:
with self.env.do_in_onchange():
self.onefield = "blahblah"
但是当一个人退出 with 块时,该数据不会写入数据库。我正在寻找某种 self.env.cache.write_to_db()
。你知道吗?
我找到了解决方案。
写入记录的缓存:
self.write(self._convert_to_write(self._cache))
写入所有环境的缓存:
models = dict()
for field, cache in self.env.cache.iteritems():
for id_, value in cache.iteritems():
models.setdefault(field.model_name, list())
models[field.model_name].append(id_)
for name, ids in models.iteritems():
for record in self.env[name].browse(ids):
record.write(record._convert_to_write(record._cache))
我正在做一个测试,我需要模仿 onchange 行为,所以:
with self.env.do_in_onchange():
self.onefield = "blahblah"
但是当一个人退出 with 块时,该数据不会写入数据库。我正在寻找某种 self.env.cache.write_to_db()
。你知道吗?
我找到了解决方案。
写入记录的缓存:
self.write(self._convert_to_write(self._cache))
写入所有环境的缓存:
models = dict()
for field, cache in self.env.cache.iteritems():
for id_, value in cache.iteritems():
models.setdefault(field.model_name, list())
models[field.model_name].append(id_)
for name, ids in models.iteritems():
for record in self.env[name].browse(ids):
record.write(record._convert_to_write(record._cache))