スタイル - Django モデル インスタンスをシリアル化する場合:信号とモデルの保存方法

StackOverflow https://stackoverflow.com/questions/131327

  •  02-07-2019
  •  | 
  •  

質問

Django モデルを保存または更新するときに XML にシリアル化する予定です。(XML は Flash ムービーにインポートされます)。post_save() または pre_save() シグナルをリッスンしてからシリアル化を実行する方が良いですか、それともモデルの save() メソッドで単に処理する方が良いですか?

役に立ちましたか?

解決

これがモデルを保存するためのコア機能である場合は、保存メソッドの一部として使用する必要があります。ただし、機能するモデルがすでにあり、それを他の目的に拡張したい場合は、モジュールを適切に分離できるため、シグナルを使用することが最善の策です。

良い例としては、サイトにイベント ログを追加し、元のサイト コードを変更するのではなく、イベントを示す信号をリッスンするだけであることが考えられます。

post_save() はモデルが正常に保存されたことを意味するため、通常は最適ですが、pre_save() を使用しても保存が成功することが保証されないため、保存の完了に依存する用途には使用しないでください。

他のヒント

保存後。そうすることで、新しいデータ (シリアル化を実行する理由) がすでにデータベース内に存在します。これにより、データベースから単に取得するだけの非常にクリーンなコードが作成され、追加の値を追加することを心配する必要がなくなります。

思いつくもう 1 つの方法は、xml ファイルをデータベースと並行して管理することです。つまり、save() でデータをデータベースと XML ファイルに追加します。巨大なテーブルを扱う場合、これによりオーバーヘッドが大幅に少なくなります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top