我想在模型中更改特定字段时发送电子邮件.可能吗?这是我正在寻找的.我有一个包含BooleanField的配置文件模型,当管理员选择为true时,我想向用户发送电子邮件.我知道我可以把它放在"def save(self):"中,但是,只要模型被更改并且字段为真,它就会触发电子邮件.如果字段从False更改为True,有没有办法让它只有电子邮件?
Ser*_*nko 11
保存方法是您想要做的完美的好地方:
def save(self):
if self.id:
old_foo = Foo.objects.get(pk=self.id)
if old_foo.YourBooleanField == False and self.YourBooleanField == True:
send_email()
super(Foo, self).save()
Run Code Online (Sandbox Code Playgroud)
您可以使用django-model-changes来做到这一点,而无需额外的数据库查找:
from django.db import models
from django.dispatch import receiver
from django_model_changes import ChangesMixin
class MyModel(ChangesMixin, models.Model):
flag = models.BooleanField()
@receiver(pre_save, sender=MyModel)
def send_email_if_flag_enabled(sender, instance, **kwargs):
if instance.previous_instance().flag == False and instance.flag == True:
# send email
Run Code Online (Sandbox Code Playgroud)