32

Odoo v8 では、多くの API デコレータが使用されています。@api.dependsしかし、との主な違いがわかりません@api.onchange

誰かがこれから私を助けてくれますか?

ありがとうございました。

4

3 に答える 3

54

@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 を説明するリンクを参照してください。

于 2015-02-02T05:04:48.250 に答える
5

@api.onchangeは仮想レコードで機能します。これらのレコードへの割り当てはデータベースに書き込まれず、クライアントに送り返す値を知るためにのみ使用されます。

フィールドは、compute パラメーターを使用して (データベースから読み取る代わりに) 計算できます。計算された値をフィールドに割り当てる必要があります。同じモデルまたは他のモデルの他のフィールドの値を使用します (@api.onchange とは異なり、のみ機能します)。同じビューのフィールドで)、api.depends( ) を使用してフィールドを指定する必要があります。

詳細については。私たちのブログをチェックしてください: https://odooforbeginnersblog.wordpress.com/2017/03/01/how-to-override-an-api-depends-decorated-method/

于 2017-03-10T18:13:30.683 に答える