Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python代码在Odoo Studio中创建计算字段?_Python_Openerp_Field_Odoo 10 - Fatal编程技术网

如何使用Python代码在Odoo Studio中创建计算字段?

如何使用Python代码在Odoo Studio中创建计算字段?,python,openerp,field,odoo-10,Python,Openerp,Field,Odoo 10,我正在使用Odoo 10.0版中的Studio。我成功地创建了名为x_studio_field_dZVpy的字段,该字段出现在product.templateGUI中 当我试图在product.templateGUI中编辑产品名称时,它会给我一个值错误:“lambda”中的禁用操作码 我选中了“只读”和“存储”复选框。在“依赖项”字段中,我输入了“名称”。我在字段“高级属性”部分的“计算”字段中输入了以下内容 def compute_product_dimension(self): fo

我正在使用Odoo 10.0版中的
Studio
。我成功地创建了名为
x_studio_field_dZVpy
的字段,该字段出现在
product.template
GUI中

当我试图在
product.template
GUI中编辑产品名称时,它会给我一个
值错误:“lambda”中的禁用操作码

我选中了“只读”和“存储”复选框。在“依赖项”字段中,我输入了“名称”。我在字段“高级属性”部分的“计算”字段中输入了以下内容

def compute_product_dimension(self):
    for record in self:
        if product.name[:2] == 'LG':
            product_specs = product.name.split('-') 
            product_dimension = float(product_specs[6])
            x_studio_field_dZVpy = product_dimension / 2
        else:
            x_studio_field_dZVpy = ""
我在字段“高级属性”部分的“计算”字段中输入了以下内容

def compute_product_dimension(self):
    for record in self:
        if product.name[:2] == 'LG':
            product_specs = product.name.split('-') 
            product_dimension = float(product_specs[6])
            x_studio_field_dZVpy = product_dimension / 2
        else:
            x_studio_field_dZVpy = ""
比如说

product.name= LG-611-40M-3UM-95P-8.000
如果product.name的前2个字符是“LG”,则代码将字符串拆分为一个数组,并将数组中的第6个元素除以2。在本例中,应将8.000除以2。“x_studio_field_dZVpy”字段应显示4.000

而不是:

for record in self:
    if name[:2] == 'LG':
尝试:


Odoo中的计算字段必须有
存储=false
(未选中)。相关字段(
name
在本例中)必须具有
存储=true
(选中)

另一个错误是Python数组是基于零的,例如:
产品规格[1]
返回
611
。将
产品规格[6]
修订为
产品规格[5]
。我重新命名了计算字段
x\u product\u dimension
。这就解决了问题

修订代码

for record in self:
    if product.name[:2] == 'LG':
        product_specs = product.name.split('-') 
        product_dimension = float(product_specs[5])
        record['x_product_dimension'] = product_dimension / 2
    else:
        record['x_product_dimension'] = ""

我试过你的建议,但还是犯了同样的错误。所以我删除了前两行代码,因为我认为它们在Odoo Studio GUI中是多余的,将“name[:2]”更改为“product.name[:2]”,将“product.x_Studio_field_dZVpy”更改为“x_Studio_field_dZVpy”。现在我没有收到错误,但是“product.x_studio_field_dZVpy”字段值显示为“0.00”,应该显示为“4.00”