OpenERP6.1で保存ボタン(添付のスクリーンショットで赤でマークされている)をクリックすると、どの関数が呼び出されますか?
前もって感謝します!!!
DReisptの回答を少し詳しく説明すると、スクリーンショットは、既存のレコードフォームのOne2Manyフィールド内にある編集可能なOne2Many行の保存ボタンを強調しているように見えます。One2Many行は、親レコードのサブレコードとして扱われるため、残りのレコードデータと一緒にアトミックに(1回のRPC呼び出しで)保存されることになっています。
この意味で、スクリーンショットで強調表示されている保存ボタンは、サーバー上のメソッドを直接呼び出すのではなく、ブラウザのローカルキャッシュに変更を保存するだけです。(これが新しいレコードの場合)または(レコードが更新されている場合)への実際の呼び出しは、後で親レコードフォームのメインの[保存]ボタンをクリックしたときにのみ実行されます。create
write
この時点で、行の値は、One2Manyコマンドのリスト内のcreate
/に提供された値のマップに渡されます。One2Manyフィールドの値の設定の詳細についてwrite
は、のドキュメントも参照してください。write
ところで、OpenERPではRPC呼び出しの調査は非常に簡単です。
openerp-server
、パラメーターを使用してプロセスを開始し--log-level=debug_rpc_answer
、すべてのRPC呼び出しの詳細なログを取得できます。注:上記はOpenERP 6.1に固有のものではなく、7.0でも同じように機能します(ただし、6.0以前のバージョンのWebクライアントではone2manyフィールドの動作が異なります)
保存ボタンは、そのモデルのORMメソッドを実行します。新しいレコードの場合はそれがcreate()
メソッドであり、更新されたレコードの場合はupdate()
メソッドです。
これらの標準メソッドは、追加機能を実装するためにモデルでオーバーライドできます。
モデルは、BaseModelsave`レコードorm.Model'. There are methods in
クラスのサブクラスです。(BaseModel is inherited by Model) which will be call for the
これらのメソッドは
def create(self, cr, user, vals, context=None)
モデルの動作を変更する場合は、このメソッドをオーバーライドする必要があります。