2015-10-21 7 views
1

Я делаю тест, где мне нужно, чтобы имитировать поведение OnChange, так:Как записать в базу данных весь кеш в среде Odoo?

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

Но когда один выходит из блока с, что данные не записаны в БД. Я ищу какой-то self.env.cache.write_to_db(). Вы знаете что-нибудь?

ответ

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

Просто для информации: Часть записи кэша записи, то не работает для меня в Odoo 9 Вместо этого я выполнил это и работал нормально: self.env.cr.commit() – MouTio

 Смежные вопросы

  • Нет связанных вопросов^_^