book in your delete view is a different Python object than the
instance.book in your signal handler. The Python object does not magically learn that the underlying db representation has changed. You could call
refresh_from_db before printing:
Or just make
num_of_likes an dynamically evaluated property altogether and you won’t have to worry about the integrity of your denormalized data:
class Book(models.Model): @property def num_of_likes(self): return self.like_set.count()
CLICK HERE to find out more related problems solutions.