Chcę wysłać wiadomość e-mail, gdy określone pole zostanie zmienione w modelu. Czy to możliwe? Oto czego szukam. Mam model profilu, który zawiera BooleanField, który po wybraniu przez administratora, aby było prawdziwe Chcę wysłać użytkownika e-mail. Wiem, że mogę umieścić go w "def save (self):", ale to odpala e-mail, gdy tylko model zostanie zmieniony, a pole jest prawdziwe. Czy istnieje sposób, aby mieć tylko e-mail, jeśli pole zostało zmienione z Fałszywy na Prawdziwy?Django - wyślij wiadomość e-mail ze zmianą modelu
Odpowiedz
Zapisz metoda jest doskonale dobre miejsce dla tego, co chcesz zrobić:
def save(self):
if self.id:
old_foo = Foo.objects.get(pk=self.id)
if old_foo.YourBooleanField == False and self.YourBooleanField == True:
send_email()
super(Foo, self).save()
Użyj hak funkcję z modeli post_save użyciem sygnałów django (http://docs.djangoproject.com/en/dev/ref/signals/#django.db.models.signals.post_save)
w tym standardzie użyć funkcji Django mailing: http://docs.djangoproject.com/en/dev/topics/email/
Nie będziesz mieć starej wartości w post_save, więc nie będzie żadnego sposobu, aby się dowiedzieć, czy ta wartość rzeczywiście się zmieniła, czy nie. –
Możesz użyć django-model-changes, aby to zrobić bez dodatkowego wyszukiwania bazy danych:
from django.db import models
from django.dispatch import receiver
from django_model_changes import ChangesMixin
class MyModel(ChangesMixin, models.Model):
flag = models.BooleanField()
@receiver(pre_save, sender=MyModel)
def send_email_if_flag_enabled(sender, instance, **kwargs):
if instance.previous_instance().flag == False and instance.flag == True:
# send email
to działało naprawdę dobrze dla moich wymagań .. – Amistad
Cieszę się, że było pomocne! –
Coś takiego może pomóc i tylko wysyła wiadomość e-mail, gdy zmiana z false na true
#models.py
from django.contrib.auth.models import User
from django.db.models import signals
from django.db import models
from django.dispatch import receiver
from django.db.models.signals import pre_save
from django.conf import settings
from django.core.mail import send_mail
#signal used for is_active=False to is_active=True
@receiver(pre_save, sender=User, dispatch_uid='active')
def active(sender, instance, **kwargs):
if instance.is_active and User.objects.filter(pk=instance.pk, is_active=False).exists():
subject = 'Active account'
mesagge = '%s your account is now active' %(instance.username)
from_email = settings.EMAIL_HOST_USER
send_mail(subject, mesagge, from_email, [instance.email], fail_silently=False)
- 1. Django email
- 2. Wyślij Email Gdy wystąpi błąd
- 3. SignalR - Wyślij wiadomość OnConnected
- 4. Wyślij wiadomość z Java ze Spring 4 WebSocket
- 5. wyślij wiadomość e-mail aktywującą z django-rejestracją
- 6. Wyślij wiadomość e-mail za pomocą json'a
- 7. Batch Wyślij wiadomość e-mail z SwiftMailer
- 8. Wyślij wiadomość e-mail FacebookSDK i Swift
- 9. Ratchet WebSocket - natychmiast wyślij wiadomość
- 10. UIActivityViewController wyślij wiadomość html ios6
- 11. wyślij wiadomość tekstową przez .net
- 12. Telegram C# przykład wyślij wiadomość
- 13. Wyślij email php z formularza kontaktowego
- 14. Testowanie Django email backend
- 15. email szablonów w Django
- 16. Django kupna Wyślij json
- 17. Efekt przejścia USATODAY ze zmianą adresu URL
- 18. Tworzenie nowego rekordu ze zmianą jednej wartości
- 19. install pakiet debian ze zmianą konfiguracji
- 20. Django - walidacja pola zmiana wiadomość
- 21. Akka: Wyślij wiadomość do przyszłego aktora
- 22. Android - Wyślij wiadomość Telegram pod określony numer
- 23. Wyślij wiadomość e-mail z wyzwalacza
- 24. Twitter: wyślij bezpośrednią wiadomość za pomocą skryby
- 25. Plus równa z rubinem wyślij wiadomość
- 26. Wyzwalacz SQL Server - Wyślij wiadomość do kolejki
- 27. Facebook XMPP Chat API wyślij wiadomość PHP
- 28. Wyślij wiadomość do skryptu w języku Python
- 29. CruiseControl.NET wydawca email problemem
- 30. django + wyślij e-mail w html z django-rejestracja
mogę zmienić if do tego: jeśli nie old.field == self.field: – ShawnMilo
Chce wysyłać wiadomości e-mail tylko wtedy, gdy wartość zmieni się z Fałsz na Prawda. Sprawdzenie, czy wartości nie są równe, nie wystarcza. –
Szukał sposobu wyzwolenia jakiejkolwiek akcji po zmianie modelu ... wygląda na to, że to jest to. Dzięki. –