2010-11-12 77 views
2

我有一个通常为空的CharField。当字段设置为非空值时,我想向所有管理员发送电子邮件通知(使用mail_managers)。此字段的更改只能通过管理网站进行。当通过管理站点修改Django CharField时发送电子邮件通知

我认为这可能是我可以通过信号做的事情,但我没有看到在documentation中列出的适当信号。有任何想法吗?

+0

你要发送的电子邮件时保存记录,或者一些其他的活动吗? – 2010-11-12 01:33:26

+0

我想在第一次用CharField模型字段中的非空值保存电子邮件时发送电子邮件。 – 2010-11-12 01:35:37

回答

6

您将需要一些历史添加到字段,如果你不希望更新如果该字段再次改变,但只是增加一个保存方法到模型类似应工作:

从django.db进口车型

class Test(models.Model): 
    empty_field = models.CharField(max_length=20, blank=True) 
    def save(self): 
     if self.pk is not None: 
      orig = Test.objects.get(pk=self.pk) 
      if orig.empty_field != self.empty_field and len(self.empty_field) > 0: 
       mail_managers ... 
     super(Test, self).save() # Call the "real" save() method     

http://www.djangoproject.com/documentation/models/save_delete_hooks/Django: When saving, how can you check if a field has changed?

+0

啊!历史价值将是关键。克。恨我时,想念明显。一旦我做出某种old_value字段,我就可以使用信号机制。谢谢! – 2010-11-12 02:43:25

+0

更新了代码抱歉,它迟到了,没有想到。你只需要一个布尔字段来检查字段是否从空变成了某些东西如果你想确保没有邮件被发送,如果该值变回空,然后再次更改:) – sunn0 2010-11-12 02:45:59

+0

好思想sunn0。欣赏它。 – 2010-11-12 03:08:00