2017-10-17 13 views
2

製品が既に作成されている場合、onchangeデコレータを「無効にする」方法はありますか?"無効" on_change id odoo 9製品を作成した後

私はフィールド(X)を持っていますが、その値は3つの別のフィールド(Y)にどのようになるでしょうか。私は "api.onchange"を使用しました。製品が作成されると、Yフィールドのうちの1つがXの値をそれ以上変更しないようにしたい。

exist()のように "self"がデータベースに存在するかどうかを確認しようとしましたが、新しいレコードでも "existing"とマークされています。私はself.idにアクセスしようとしましたが、不可能です。ブール型の追加フィールドを作成することを考えましたが、最後の手段です。

答えて

0

NEW API

まず絵が私はself._originにアクセスもしている場合、明らかに私はそれ

へのアクセス権を持っているプログラムを停止し、確認するために、デバッグモードを使用 product.templateの名前にのonchangeイベントを追加しました

enter image description here

それは私が製品を更新したときにID値が

を通過していることを示す第二の画像は、私は新しいプロダクトを作成していたときに

今、第三絵はそうあなたが、私は理由を理解したいしてください使用使用しているコードを投稿することができself._originidの値がFalse

enter image description here

であることを示しています古いAを使用するときは、

OLD APIに

をself._originするacccessを持っていませんpi self._originはアクセスではありませんが、編集モードのIDのリストを持っていれば、リストは空になりません。

def onchange_name(self, cr, uid, ids, name, context=None): 
     # when updating a record ids will not be empty 
     # in my case will be ids=[55] 
     # in create mode the ids is empty 
     # id = [] 
     if not ids : 
      # here you are in create mode you put your logic here 
+0

お返事ありがとうございました。オドーは自己を認識しません。オルギン。私がそれを使用しようとしている場合、 odooは、「product.template」オブジェクトには属性 '_origin''がありません。 if isinstance(self._origin、models.NewId)またはisinstance(self._origin.id、models.NewId) 'と単純に' print(self._origin) 'を試して、odooがこの行でクラッシュしていても新しい製品を作成したり既存の製品を編集しようとしている場合 – Blichu

+0

私の編集を確認する私の質問どのようにonchangeイベントを実装しましたか – Cherif

関連する問題