Mam model, który zawiera pole boolowskie reprezentujące zatwierdzenie elementu lub nie. Chcę wysłać wiadomość e-mail po zaznaczeniu tego pola.
Rozumiem, jak zastąpić metodę zapisu i wysłać wiadomość e-mail, jeśli jest prawdziwa, ale spowoduje to wysłanie e-maila za każdym razem, gdy zostanie zapisany.
Ponieważ chcę wysłać wiadomość e-mail tylko raz, czy istnieje sposób sprawdzenia, czy boolean jest prawdziwy tylko po raz pierwszy?
Dzięki
Odpowiedzi:
3 dla odpowiedzi № 1To, co robię, polega na tym, że dostaję element w bazie przed zapisaniem i porównuję go z tym, co mam po.
def save(self):
# Only when we update an element. Not when we create it
if self.pk:
# We get the old values of the model
old = Model.objects.get(pk=self.pk)
# If it"s approved and it wasn"t before
if self.approved == True and old.approved == False:
send_mail(...)
super(Model, self).save()
Tak więc wiadomość e-mail zostanie wysłana tylko wtedy, gdy obiekt przejdzie od zatwierdzenia do zatwierdzenia.