我遇到了post_save
两次被调用的问题,我花了很多时间来弄清楚前面提到的导入。我确认导入只发生一次,不存在多次注册的问题。此外,我dispatch_uid
在信号注册中使用了一个唯一的,根据文档应该已经解决了这个问题。它没有。我更仔细地看了看,发现信号处理程序在 .create() 和 .save() 上都被调用了。为什么要创建?
我可以让它工作的唯一方法是依靠下面我的信号处理程序中的hack
created = False
#Workaround to signal being emitted twice on create and save
if 'created' in kwargs:
if kwargs['created']:
created=True
#If signal is from object creation, return
if created:
return