Odoo 13: как решить CacheMiss Exception - PullRequest
1 голос
/ 08 апреля 2020

Я работаю над созданием документа .docx на Odoo 13, я проверил модуль «report_py3o», но нет версии для Odoo 13, поэтому я решил выполнить какую-то миграцию (я просто удалил «@ api.multi») Версия Odoo 12 для Odoo 13. Я получил сообщение об ошибке типа odoo.exceptions.CacheMiss: ('ir.actions.report (85,). Is_py3o_report_not_available', None) , и моя база данных была повреждена. Вот полный журнал: журнал ошибок .

odoo.exceptions.CacheMiss: ('ir.actions.report(85,).is_py3o_report_not_available', None)

Я также проверил модуль Aero, но он доступен только для 8,0 и 9,0. Вы можете помочь мне? У вас есть альтернатива для меня?

1 Ответ

2 голосов
/ 08 апреля 2020

Я не смотрел его, но обычно выдается CacheMiss, когда метод вычисленного поля не вычисляет значение для каждой получаемой записи.

Неправильно:

computed_char_field = fields.Char(compute="_compute_computed_char_field")
some_boolean = fields.Boolean()

def _compute_computed_char_field(self):
    for record in self:
        if record.some_boolean:
            record.computed_char_field = 'something'

Если есть некоторые записи с some_boolean == False, вы получите CacheMiss при их вызове (например, в виде списка)

Правильный способ - всегда устанавливать значение, в этом примере просто добавить ветку else:

def _compute_computed_char_field(self):
    for record in self:
        if record.some_boolean:
            record.computed_char_field = 'something'
        else:
            record.computed_char_field = ''
...