1

製品が販売されるたびに、自動的に契約を作成しようとしています。テンプレート コントラクトを指すフィールドを製品に追加しました。

@api.depends については知っていますが、それは field.function の作成に依存しています。フィールドは必要ありませんが、関数を呼び出す必要があります。どうすればこれを達成できますか?

4

2 に答える 2

1

また、OCA のauditlogモジュール コードを参照することもできます。レコードをログに記録するアクションが実装されています...

しかし、柔軟でカスタマイズ可能にし、ハードコーディングを避けたい場合は、アクション ルールを使用することをお勧めします...

アクション ルールを使用すると、アクションをオブジェクトの作成と更新にバインドできます。他のメソッドをフックしたい場合は、同様の問題 (ログの削除) に対して提案された可能なアプローチがあります。

于 2015-05-27T07:29:54.713 に答える
0

製品の書き込みメソッドをオーバーライドする必要があり、内部では次のように関数を呼び出すことができます。

def write(self, cr, uid, ids, vals, context=None):
    # add your custom code here
    return super(class_name,self).write(cr, uid, ids, vals, context=context)

vals のフィールドを確認する必要があります。このフィールドの値が変更された場合、フィールド (状態フィールドだと思います) が使用可能になります。次のように確認してください。

if vals.get('state',False):
   ## call your function

更新された vals 内のフィールドのみを取得することに注意してください。

お役に立てれば。

于 2015-03-20T04:21:49.297 に答える