这是我的模型
class Profile(models.Model):
activate = models.BooleanField(default=False)
现在我想做的是,只要管理面板中的某个人做到这一点,就会向该帐户已激活的特定用户发送一封电子邮件。
但我只想在值从假变为真时发送邮件。如果该值已经为真,我不想发送任何邮件。
用 post save 试过这个东西,但它会在 Profile Model 上的每次保存操作后发送电子邮件
这是我的模型
class Profile(models.Model):
activate = models.BooleanField(default=False)
现在我想做的是,只要管理面板中的某个人做到这一点,就会向该帐户已激活的特定用户发送一封电子邮件。
但我只想在值从假变为真时发送邮件。如果该值已经为真,我不想发送任何邮件。
用 post save 试过这个东西,但它会在 Profile Model 上的每次保存操作后发送电子邮件
这里的代码,可以做到这一点(使用pre_save 信号):
from django.db.models.signals import pre_save
from django.dispatch import receiver
@receiver(pre_save, sender=Profile)
def profile_changed(sender, instance, *args, **kwargs):
if instance.activate:
if not instance.pk:
print "Send email to user here"
else:
activate_was = sender._default_manager.filter(pk=instance.pk)\
.values("activate").get()["activate"]
if activate_was != instance.activate:
print "Send email to user here"