1

这是我的模型

class Profile(models.Model):
    activate = models.BooleanField(default=False)

现在我想做的是,只要管理面板中的某个人做到这一点,就会向该帐户已激活的特定用户发送一封电子邮件。

但我只想在值从假变为真时发送邮件。如果该值已经为真,我不想发送任何邮件。

用 post save 试过这个东西,但它会在 Profile Model 上的每次保存操作后发送电子邮件

4

1 回答 1

1

这里的代码,可以做到这一点(使用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"
于 2013-05-06T09:15:21.363 回答