2017-08-02 62 views
2

我正在使用Studio in Odoo version 10.0。我成功創建了名爲x_studio_field_dZVpy的字段,該字段出現在product.template GUI中。如何使用Python代碼在Odoo Studio中創建計算字段?

當我嘗試編輯product.template GUI中的產品名稱時,它給我一個Value Error: forbidden opcode(s) in '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 = "" 

例如

product.name= LG-611-40M-3UM-95P-8.000 

如果product.name的前兩個字符是「LG」的代碼分割字符串到一個數組,並且將第六元件通過2數組中。在這個例子中,這應該將8.000除以2.然後,「x_studio_field_dZVpy」字段應該顯示4.000。

screenshot of Odoo Studio GUI with code

回答

1

相反的:

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

嘗試:

for product in self: 
    if product.name[:2] == 'LG': 
+1

我想你的建議,但仍然得到了同樣的錯誤。因此,我刪除了前兩行代碼,因爲我認爲它們在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」 – Jason

0

在Odoo計算字段必須具有stored = false(未選中)。相關字段(在這種情況下爲name)必須有stored = true(選中)。

另一個錯誤是Python數組爲零,例如:product_specs[1]返回611。修訂product_specs[6]product_specs[5]。我將計算字段x_product_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'] = "" 
相關問題