Odoo v8 では、多くの API デコレータが使用されています。@api.depends
しかし、との主な違いがわかりません@api.onchange
。
誰かがこれから私を助けてくれますか?
ありがとうございました。
@api.depends
このデコレータは、特に odoo の「fields.function」に使用されます。「field.function」の場合、値を計算してフィールドに格納できます。計算が同じテーブルまたは他のテーブルの他のフィールドに依存する可能性がある場合は、「 @api.depends' を使用して、テーブルのフィールドを「監視」します。
したがって、デコレータのフィールドのいずれかが「ORM によって変更されたか、フォームで変更された」場合、装飾された関数の呼び出しがトリガーされます。
フィールド「x、y & z」を持つテーブル「A」と、フィールド「p」を持つテーブル「B」があるとします。「p」は、テーブル「A」のフィールド「x」に応じたフィールド関数です。 、したがって、フィールド「x」で何らかの変更が行われると、テーブル「B」のフィールド「p」を計算するための装飾された関数がトリガーされます。
テーブル「A」と「B」が何らかの形で関連していることを確認してください。
@api.onchange
このデコレーターは、デコレーターで指定されたフィールドのいずれかがフォームで変更された場合に、装飾された関数の呼び出しをトリガーします。ここでは、スコープは同じ画面/モデルに限定されます。
フォームにフィールド「DOB」と「Age」があるとします。そのため、「DOB」の @api.onchange デコレータを使用できます。「DOB」の値を変更するとすぐに、「age」フィールドを計算できます。 .
@api.depends と @api.onchange でフィールドに類似点があるかもしれませんが、いくつかの違いは、onchange のスコープが同じ画面/モデルに限定されているのに対し、@api.depends は他の関連する画面/モデルも機能することです。
詳細については、 Odoo v8 のすべての API を説明するリンクを参照してください。
@api.onchangeは仮想レコードで機能します。これらのレコードへの割り当てはデータベースに書き込まれず、クライアントに送り返す値を知るためにのみ使用されます。
フィールドは、compute パラメーターを使用して (データベースから読み取る代わりに) 計算できます。計算された値をフィールドに割り当てる必要があります。同じモデルまたは他のモデルの他のフィールドの値を使用します (@api.onchange とは異なり、のみ機能します)。同じビューのフィールドで)、api.depends( ) を使用してフィールドを指定する必要があります。
詳細については。私たちのブログをチェックしてください: https://odooforbeginnersblog.wordpress.com/2017/03/01/how-to-override-an-api-depends-decorated-method/