Отправить уведомление по электронной почте, когда Django CharField изменен через сайт администратора - PullRequest
2 голосов
/ 12 ноября 2010

У меня есть CharField, который обычно пуст. Я хочу разослать уведомление по электронной почте всем менеджерам (используя mail_managers), когда для поля установлено непустое значение. Изменения в этом поле должны происходить только через администратор сайта.

Я предположил, что это может быть что-то, что я мог бы сделать с помощью сигналов, но я не вижу соответствующего сигнала, указанного в документации . Есть идеи?

1 Ответ

6 голосов
/ 12 ноября 2010

Вам нужно будет добавить немного истории в поле, если вы не хотите обновлений, если поле снова изменилось, а просто добавление метода сохранения в вашу модель, аналогично следующему, должно работать:импорт моделей

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: При сохранении как проверить, изменилось ли поле?

...