オブジェクトの作成後にpost_save信号が複数回発生するのを防ぐのに問題があります。Django - dispatch_uidにもかかわらず作成後の複数のpost_save信号
次のように私の信号が定義されている:
@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)
1 Order.create後の信号に渡さkwargsからを印刷する場合、信号が注文/ apps.py
class OrdersConfig(AppConfig):
name = 'orders'
def ready(self):
super(OrdersConfig, self).ready()
import orders.signals
にインポートされる:
{'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つの作成では、1つのpost_save信号が生成され、argsが生成されます。 Trueを、作成した場合は1をFalseにします。私は、同じファイルに定義されているdispatch_uidとpost_deleteシグナルを1回の削除で複数回起動しないため、シグナルが複数回インポートされるという問題はないと思います。
誰も私にこれがなぜ起こっているのか教えてもらえますか?ありがとう
オーダー・モデルの保存をオーバーライドしますか?また、オーダー・モデルを作成するコードを添付して – iklinac