如果您使用的是,Django 会发送 pre/post_delete 信号queryset.delete()
方法,但不应该也发送 pre/post_save onqueryset.update()
?
也许应该如此,但事实并非如此。.update()
不调用.save()
方法对 QuerySet 中的各个对象进行更新,而是在单个 SQL 调用中更新所有对象(实际上是 UPDATE)。既然不使用.save()
,调用保存前和保存后信号会不一致。我当然可以想象人们可能希望它这样做的用例,但我也可以想象人们不希望这样做的情况。在我看来,不调用保存前和保存后信号是正确的行为,因为它为程序员留下了更多的灵活性。手动触发这些信号并不难,我认为要求程序员记住触发信号以获得所需的行为绝对是一个更好的设计决策,而不是要求他们记住断开信号以避免不良行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)