信号在每次用户登录时触发,而不是post_save

时间:2019-02-06 08:57:04

标签: django django-signals

我有一个小信号连接到用户模型的post_save。我希望它仅在创建用户时发送电子邮件,而不在登录时发送电子邮件,就像在这种形式中那样。

我尝试过创建它:但仍在登录时发送电子邮件。

从django.db.models.signals导入post_save

def save_profile(sender, instance, created, **kwargs):

        print("Signal patched")
        subject = 'New Order Created %s'%instance
        message = 'Order %s created at %s . Please check if needs further settings!'%(instance, datetime.now())
        emailFrom = 'test@test.com'
        emailTo = [settings.EMAIL_HOST_USER]
        send_mail(subject, message, emailFrom, emailTo, fail_silently=True)




post_save.connect(save_profile, sender=Order)

1 个答案:

答案 0 :(得分:1)

仅在创建时触发它。

def save_profile(sender, instance, created, **kwargs):
    if created:
        print("Signal patched")
        subject = 'New Order Created %s'%instance
        message = 'Order %s created at %s . Please check if needs further settings!'%(instance, datetime.now())
        emailFrom = 'test@test.com'
        emailTo = [settings.EMAIL_HOST_USER]
        send_mail(subject, message, emailFrom, emailTo, fail_silently=True)

似乎它连接到Order而不是用户:

post_save.connect(save_profile, sender=User)