Detect field change using post_save instead of pre_save signal

Viewed 6016

I need to do some actions when one field has changed.

Since this action needs to work with already saved object, I can't use pre_save signal like this:

@receiver(pre_save, sender=reservation_models.Reservation)
def generate_possible_pairs(sender, instance, **kwargs):
    try:
        reservation_old = sender.objects.get(pk=instance.pk)
    except sender.DoesNotExist:
        pass # Object is new, so field hasn't technically changed, but you may want to do something else here.
    else:
        if not reservation_old.datetime == instance.datetime: # Field has changed
            do_something(instance) # It would be better to be sure instance has been saved

Is it possible to use post_save signal for this?

I would like to avoid adding temporary attributes to this model.

2 Answers
Related