连接到特定发件人发送的信号无法按预期工作
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())
我的模型结构如下
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())