10đź‘Ť
âś…
You can store them as instance attributes.
@receiver(pre_save, sender=Activity)
def send_user_profile_analytics(sender, **kwargs):
instance = kwargs['instance']
instance._activity_completed_old_value = instance.is_completed
@receiver(post_save, sender=Activity)
def send_user_profile_analytics(sender, **kwargs):
instance = kwargs['instance']
if instance.is_completed != instance._activity_completed_old_value:
# send analytics
In this way you “send analytics” only if is_completed
changes during save
(that means that save
doesn’t just store the value but makes some further elaboration).
If you want to perform an action when a field is changed during instance life-time (that is from its creation till the save
) you should store the initial value during post_init
(and not pre_save
).
👤Don
Source:stackexchange.com