如何在Odoo环境中将所有缓存写入数据库? [英] How to write to database all cache in Odoo environment?

查看:720
本文介绍了如何在Odoo环境中将所有缓存写入数据库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm doing a test where I need to imitate the onchange behavior, so:

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

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

But when one exits the with block, that data is not written to DB. I'm looking for some kind of self.env.cache.write_to_db(). Do you know of any?

推荐答案

我找到了解决方案.

要写入记录的缓存,请执行以下操作:

To write a record's cache:

self.write(self._convert_to_write(self._cache))

要写入所有环境的缓存,请执行以下操作:

To write all the environment's 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))

这篇关于如何在Odoo环境中将所有缓存写入数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆