我很難阻止創建一個對象後多次發射post_save信號。Django - 創建多個post_save信號後儘管dispatch_uid
我的信號被定義如下:
@receiver(post_save, sender=Order, dispatch_uid='post_save_order')
def post_save_order(sender, **kwargs):
instance = kwargs.get('instance')
if instance.type == 'buy':
delta = instance.quantity
else:
delta = instance.quantity * -1
Balance.update(instance.user, instance.quote_currency, delta)
信號在訂單導入/ apps.py
class OrdersConfig(AppConfig):
name = 'orders'
def ready(self):
super(OrdersConfig, self).ready()
import orders.signals
當後1個Order.create打印傳遞kwargs到信號:
{'instance': object, 'signal': signal, 'using': 'default', 'update_fields': None, 'raw': False, 'created': True}
{'instance': object, 'signal': signal, 'using': 'default', 'update_fields': None, 'raw': False, 'created': False}
如此顯然在單個創建上,有1個post_save信號用args創建:真和1與創建:假。我不認爲問題在於信號可能會被多次導入,因爲我提供了一個dispatch_uid,並且在同一個文件中定義的post_delete信號在單次刪除時不會被多次觸發。
任何人都可以啓發我爲什麼發生這種情況?謝謝
您是否覆蓋了訂單模型保存,還可以附加爲您創建訂單的代碼 – iklinac