我为我的模型编写了一些智能通用计数器和管理器(以避免select count
查询等)。因此,我对 post_save 进行了一些繁重的逻辑。
我想防止在不需要时处理信号。我想完美的界面应该是:
instance.save(dispatch_signal=False)
我怎样才能做到这一点?
更新
如果有人感兴趣,请提供有关我在做什么的更多信息:
- 通用计数器存储在单独的表中
- 每次 Django 对对象列表进行分页时,它都会调用我的自定义管理器的重写 count() 方法,该方法基本上检索适当对象类的静态计数器值。
- 信号触发计数器更新的逻辑,这有点复杂,因为它检查相关模型的许多方面(即它必须基于嵌套类别树生成可见性属性)。我不能把这个逻辑放在 Model.save() 中,因为一个计数器依赖于许多不同的模型。我希望将这种逻辑整合在一起,而不是碎片散布。
- 我正在对我的一些模型进行非规范化,因此我跨表重写(复制)某些值。
- 出于测试目的,我运行我的小命令扩展 - Dilla来填充随机数据。
- 我注意到触发了不需要的信号,因此我希望它们有条件地运行。
希望它足够清楚。请原谅我的语言错误。