如何在不发送信号的情况下保存模型?

43 投票
6 回答
12864 浏览
提问于 2025-04-15 15:01

我该如何保存一个模型,这样就不会发送信号了。(比如说 post_save 和 pre_save)

6 个回答

7

这个问题被标记为“不会修复”,原因如下:

简单来说,考虑到信号的定义目的,应该让附加的信号处理器变得更聪明(就像davedash的建议那样),而不是去改变发出信号的代码。禁用信号只是一个快速的解决办法,只有在你确切知道哪些处理器附加在信号上时才有效,而且这样做会把问题隐藏起来,因为修复放错了地方。

11
ModelName.objects.bulk_create([your object/objects])

你还可以在这里了解更多内容 django文档

65

这有点像小技巧,但你可以这样做:

使用一个独特的标识符配合过滤器,然后使用查询集的更新方法(这样就不会触发信号)

user_id = 142187
User.objects.filter(id=user_id).update(name='tom')

撰写回答