2010-11-12 86 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

相關問題