0

私はかなり標準的なsave_model()オーバーライドを持っています。これはいくつかの値を計算し、最後にobject.save()を呼び出します

スケーラビリティを向上させるためにアプリケーションを書き直していますが、 .save() はスレッドセーフではなく、データのパーティション分割が許可されていないことを読みました。推奨されるベスト プラクティスは、update() を使用することです。

私の質問は、save_model() で save() の代わりに update() を実行しても問題ないですか? マイナス面は見当たりませんよね?

4

1 に答える 1

0

一度に複数のオブジェクトを更新することに関するドキュメントの警告は関連していると思います。シグナルを使用していない場合、モデルの保存メソッドをオーバーライドしている場合、またはauto_nowフィールド オプションを使用している場合、他の潜在的な問題は考えられません。

update()メソッドは直接 SQL ステートメントに変換されることに注意してください。直接更新の一括操作です。save()モデルでメソッドを実行したり、pre_saveまたはpost_saveシグナル ( を呼び出した結果save()) を発行したり、auto_nowフィールド オプションを受け入れたりしません。すべてのアイテムを に保存し、各インスタンスでメソッドが呼び出されるQuerySetようsave()にする場合、それを処理するための特別な関数は必要ありません。それらをループして呼び出すだけsave()です:

于 2012-11-14T14:45:11.317 に答える