2010-11-12 13 views
2

J'ai un champ CharField qui est normalement vide. Je souhaite envoyer une notification par courrier électronique à tous les responsables (en utilisant mail_managers) lorsque le champ est défini sur une valeur non vide. Les modifications apportées à ce champ ne doivent être effectuées que via le site d'administration. Je suppose que cela pourrait être quelque chose que je pourrais faire via des signaux, mais je ne vois pas un signal approprié énumérés dans le documentation. Des idées?Envoyer une notification par e-mail lorsqu'un site Django CharField est modifié via le site d'administration

+0

voulez-vous envoyer l'e-mail lorsque l'enregistrement est enregistré, ou sur un autre événement? –

+0

Je souhaite envoyer un e-mail la première fois qu'il est enregistré avec une valeur non vide dans ce champ de modèle CharField. –

Répondre

6

Vous aurez besoin d'ajouter un peu d'histoire sur le terrain si vous ne voulez pas les mises à jour si le champ est modifié à nouveau, mais simplement l'ajout d'une méthode de sauvegarde à votre modèle similaire à devrait fonctionner:

d'importation django.db modèles

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     

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

+0

Ahh! La valeur de l'historique serait la clé. Gr. Je déteste quand l'évidence me manque. Une fois que je fais une sorte de champ old_value, je pourrais juste utiliser le mécanisme de signal. Merci! –

+0

Mis à jour le code désolé il est en retard et ne pensait pas. Vous aurez seulement besoin d'un champ booléen pour vérifier si le champ a été changé de vide à quelque chose SI vous voulez vous assurer qu'aucun courrier n'est envoyé si la valeur est de nouveau vide et ensuite changé à nouveau :) – sunn0

+0

Bonne réflexion sunn0. Appréciez-le. –

Questions connexes