2009-11-05 26 views
2

我有一个模型,其中包含一个布尔字段代表该项目的批准与否。 我想在选中此框时发送电子邮件。在Django管理员我怎样才能知道一个布尔值是第一次设置为true

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

因为我只想发送一次电子邮件,有没有办法检查一个布尔值是真的只有第一次?

感谢

回答

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

所以电子邮件只会发送时,对象从未批准到批准。

+0

谢谢!我非常肯定它是这样的,但我无法弄清楚如何获得预存值以便比较。明显的,一旦你看到它,一如既往。 – Colin 2009-11-05 15:13:49

相关问题