我有一个模型,其中包含一个表示项目批准的布尔字段。 我想在选中此框时发送电子邮件。
我理解如何覆盖保存方法并发送电子邮件,如果它是真的,但每次保存时都会发送一封电子邮件。
由于我只想发送一次电子邮件,有没有办法只在第一次检查布尔值是否为真?
由于
答案 0 :(得分:3)
我所做的就是在保存之前将元素保存在数据库中,然后将其与之后的内容进行比较。
def save(self):
# Only when we update an element. Not when we create it
if self.pk:
# We get the old values of the model
old = Model.objects.get(pk=self.pk)
# If it's approved and it wasn't before
if self.approved == True and old.approved == False:
send_mail(...)
super(Model, self).save()
因此,只有当对象从未批准到批准时,才会发送电子邮件。