11

メソッドを使用している場合、Django は pre/post_delete シグナルを送信していますが、queryset.delete()pre/post_save on も送信すべきではありませんqueryset.update()か?

4

1 に答える 1

9

おそらくそうすべきですが、そうではありません。.update()QuerySet 内の個々のオブジェクトに対してメソッドを呼び出すのでは.save()なく、1 回の SQL 呼び出しですべてを更新します (場合によっては更新)。を使用しないため.save()、保存前および保存後のシグナルを呼び出すのは一貫性がありません。そうしたいユースケースは確かに想定できますが、そうしないユースケースも想定できます。ここでは、保存前および保存後のシグナルを呼び出さないことが正しい動作であると思われます。これにより、プログラマの柔軟性が向上します。これらの信号を手動でトリガーすることは難しくありません。

于 2009-11-07T17:12:58.607 に答える