/ / en el administrador de Django, ¿cómo puedo saber si un booleano se establece como verdadero solo por primera vez? django, django-admin, guardar

en el administrador de Django, ¿cómo puedo saber que un booleano se establece como verdadero por primera vez solamente? django, django-admin, guardar

Tengo un modelo que contiene un campo booleano que representa la aprobación del artículo o no. Me gustaría enviar un correo electrónico cuando la casilla está marcada.

Entiendo cómo anular el método de guardado y enviar el correo electrónico si es cierto, pero esto enviará un correo electrónico cada vez que se guarde.

Como solo deseo enviar el correo electrónico una vez, ¿hay alguna forma de comprobar que un booleano solo sea válido por primera vez?

Gracias

Respuestas

3 para la respuesta № 1

Lo que hago es que obtengo el elemento tal como está en la base de datos antes de guardar y lo comparo con lo que tengo después.

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()

Por lo tanto, el correo electrónico se enviará solo cuando el objeto pase de no aprobado a aprobado.