我不断收到此错误,我想念什么?
我尝试了多种方法,但始终会遇到此错误,我肯定会错过一些简单的方法。
图片链接中的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
答案 0 :(得分:1)
计算字段函数在Odoo的eval
的沙盒实现中执行,称为safe_eval
。它禁止某些Python解释器操作码来防止任意代码执行。您收到的错误是因为IMPORT_NAME
和IMPORT_FROM
操作码are not allowed(由from odoo import api
语句引起)。
您不需要导入语句,字段声明,@api.depends
装饰器或计算功能签名定义,您的计算方法应如下所示:
for record in self:
record['x_studio_field_CKrxZ'] = record.list_price + record.standard_price
应该在 Advanced Properties 下的 Dependencies 字段中声明字段的依赖性,而不是@api.depends('list_price','standard_price')
,如屏幕截图所示。