连接到特定发件人发送的信号无法按预期工作

Connecting to signals sent by specific senders do not work as expected

我的模型结构如下

class WalletTransactions(models.Model):
     ...
     fields here    
     ...

class WalletBalance(models.Model):
     ...
     fields here    
     ...    

如下所示的信号处理程序

@receiver(post_save, sender=WalletTransactions)
def update_balance(sender, instance, created, **kwargs):
    print instance.payment_type #field in model

终于注册了

post_save.connect(update_balance, dispatch_uid=uuid.uuid4())

现在我希望 update_balance 仅在 WalletTransaction 上的 save 按照 doc 被调用时被调用。

但是当我尝试登录到我的应用程序时,当调用 Session 上的 save 时调用 update_balance 抛出以下错误。

AttributeError at /login/
'Session' object has no attribute 'payment_type'

这里可能是什么错误?

您连接回调函数两次。 您可以将信号与 @receiver post_save.connect.

连接

查看此处了解更多信息: https://docs.djangoproject.com/en/1.11/topics/signals/#connecting-receiver-functions

此外,您没有在 post_save.connect() 中指定 sender。所以基本上你将回调连接到 every 对象的保存方法。

要使其正常工作,只需删除此行:

post_save.connect(update_balance, dispatch_uid=uuid.uuid4())