通过管理站点修改Django CharField时发送电子邮件通知

时间:2010-11-12 01:30:34

标签: django django-admin django-signals

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

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

1 个答案:

答案 0 :(得分: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?