如何在Odoo环境中写入数据库的所有缓存?

时间:2015-10-21 08:47:54

标签: python odoo odoo-10

我正在做一个我需要模仿onchange行为的测试,所以:

with self.env.do_in_onchange():
    self.onefield = "blahblah"

但是当一个退出with块时,该数据不会写入DB。我正在寻找某种self.env.cache.write_to_db()。你知道吗?

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。

写一个记录的缓存:

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))