2017-08-02 5 views
2

私はStudio in Odoo version 10.0を使用しています。 product.template GUIに表示される名前x_studio_field_dZVpyのフィールドを作成しました。Pythonコードを使用してOdoo Studioで計算フィールドを作成する方法は?

product.template GUIの製品名を編集しようとすると、Value Error: forbidden opcode(s) in 'lambda'と表示されます。

"読み取り専用"チェックボックスと "保存済み"チェックボックスをチェックしました。 "dependencies"フィールドに "name"と入力しました。フィールドの "詳細プロパティ"セクションの "計算"フィールドに以下を入力しました。

フィールドの[詳細プロパティ]セクションの[計算]フィールドに、次のように入力しました。例えば

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

について

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の最初の2つの文字が「LG」である場合、コードは、配列に文字列を分割し、2配列内の6番目の要素を分割この例では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': 

試してみてください。Odooで

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

私はあなたの提案を試みたが、まだ同じエラーを得ました。だから私は最初の2行のコードを削除しました。これは、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

計算フィールドstored = false(チェック)を持っている必要があります。依存フィールド(この場合はname)はstored = true(チェックされている)である必要があります。

もう1つのエラーは、Python配列が0の場合です。例えば、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'] = "" 
関連する問題