Ich habe ein Modell, das ein boolesches Feld enthält, das die Zustimmung des Elements darstellt oder nicht. Ich möchte eine E-Mail senden, wenn die Box aktiviert ist.
Ich verstehe, wie man die Speichermethode überschreibt und die E-Mail sendet, wenn es wahr ist, aber das wird eine E-Mail jedes Mal senden, wenn es gespeichert wird.
Da ich die E-Mail nur einmal senden möchte, gibt es eine Möglichkeit zu überprüfen, ob ein Boolescher Wert nur zum ersten Mal wahr ist.
Vielen Dank
Antworten:
3 für die Antwort № 1Was ich tue ist, dass ich das Element, wie es in der Datenbank ist, vor dem Speichern bekomme und ich vergleiche es mit dem, was ich danach habe.
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()
Daher wird die E-Mail nur gesendet, wenn das Objekt von "Nicht genehmigt" zu "Genehmigt" wechselt.