製品が販売されるたびに、自動的に契約を作成しようとしています。テンプレート コントラクトを指すフィールドを製品に追加しました。
@api.depends については知っていますが、それは field.function の作成に依存しています。フィールドは必要ありませんが、関数を呼び出す必要があります。どうすればこれを達成できますか?
また、OCA のauditlogモジュール コードを参照することもできます。レコードをログに記録するアクションが実装されています...
しかし、柔軟でカスタマイズ可能にし、ハードコーディングを避けたい場合は、アクション ルールを使用することをお勧めします...
アクション ルールを使用すると、アクションをオブジェクトの作成と更新にバインドできます。他のメソッドをフックしたい場合は、同様の問題 (ログの削除) に対して提案された可能なアプローチがあります。
製品の書き込みメソッドをオーバーライドする必要があり、内部では次のように関数を呼び出すことができます。
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 内のフィールドのみを取得することに注意してください。
お役に立てれば。