Odoo Studio 服务器错误计算字段,错误

问题描述 投票:0回答:2

我不断收到此错误,我错过了什么?
我尝试了多种方法,但总是收到此错误,我确信我错过了一些简单的东西。
图片链接中 Odoo 设置的示例图片

Odoo Compute Settings

from odoo import api
x_studio_field_CKrxZ = fields.Float(compute='compute_product_dimension', store=True)
@api.depends('list_price','standard_price')
def compute_product_dimension(self):
  for record in self:
      record['compute_product_dimension'] = record.list_price + record.standard_price 

Odoo 中的错误

ValueError: forbidden opcode(s) in "from odoo import api\r\nx_studio_field_CKrxZ = fields.Float(compute='compute_product_dimension', store=True)\r\[email protected]('list_price','standard_price')\r\ndef compute_product_dimension(self):\r\n  for record in self:\r\n      record['compute_product_dimension'] = record.list_price + record.standard_price \r\n": IMPORT_NAME, IMPORT_FROM
python odoo odoo-12
2个回答
3
投票

计算域函数在 Odoo 的

eval
沙盒实现(称为
safe_eval
)中执行。它禁止某些 Python 解释器操作码以防止任意代码执行。您收到的错误是因为
IMPORT_NAME
IMPORT_FROM
操作码 不允许(由
from odoo import api
语句引起)。

您不应该需要导入语句、字段声明、

@api.depends
装饰器或计算函数签名定义,您的计算方法应该如下所示:

for record in self:
    record['x_studio_field_CKrxZ'] = record.list_price + record.standard_price 

字段的依赖项不应在

@api.depends('list_price','standard_price')
中声明,而应在 Advanced Properties 下的 Dependencies 字段中声明,如屏幕截图中所示,您已经执行了该操作。


0
投票

这不适用于您的具体情况,而是一般错误。

导致此错误的另一个原因是访问记录属性进行存储时。

for record in self:
    record.somefield = record.someotherfield

结果不允许第一个引用:操作码是:

STORE_ATTR

第二个参考就可以了。

差点让我发疯,以为这两个人会受到平等对待。

© www.soinside.com 2019 - 2024. All rights reserved.