Odoo 13:如何解决 CacheMiss 异常

m0r*_*r7y 4 python-3.x odoo odoo-13


我正在 Odoo 13 上生成 .docx 文档,我检查了“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)
Run Code Online (Sandbox Code Playgroud)

我还检查了航空模块,但它仅适用于 8.0 和 9.0。
你能帮助我吗?你有替代品吗?

CZo*_*ner 7

我没有仔细研究过它,但是CacheMiss当计算字段方法没有为它获得的每条记录计算一个值时,通常会抛出 a 。

错误的:

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'
Run Code Online (Sandbox Code Playgroud)

如果有一些记录,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 = ''
Run Code Online (Sandbox Code Playgroud)

  • 我按照您教我的方式以正确的方式设置了所有计算字段。该模块现在适用于 v13。非常感谢。 (3认同)