/ / in Django admin Wie kann ich wissen, dass ein boolescher Wert zum ersten Mal wahr ist - django, django-admin, save

in Django admin, wie kann ich wissen, ein boolean ist nur zum ersten Mal wahr - django, django-admin, speichern

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 № 1

Was 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.