1

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

Odoo 计算设置

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\n@api.depends('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
4

1 回答 1

2

计算域函数在 Odoo 的被eval调用的沙盒实现中执行safe_eval。它禁止某些 Python 解释器操作码以防止任意代码执行。您收到的错误是因为不允许IMPORT_NAME使用andIMPORT_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字段中声明字段的依赖项,而不是 ,如屏幕截图所示,您已经这样做了。

于 2018-11-07T23:23:30.567 回答