在Django admin中我怎么知道布尔值只是第一次设置为true

时间:2009-11-05 11:55:51

标签: django django-admin save

我有一个模型,其中包含一个表示项目批准的布尔字段。 我想在选中此框时发送电子邮件。

我理解如何覆盖保存方法并发送电子邮件,如果它是真的,但每次保存时都会发送一封电子邮件。

由于我只想发送一次电子邮件,有没有办法只在第一次检查布尔值是否为真?

由于

1 个答案:

答案 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()

因此,只有当对象从未批准到批准时,才会发送电子邮件。