You don't need to use a signal dispatcher at all.  You can check for and generate the hash __in__ the save function itself.  I am wary of signal dispatchers in django.  They separate operations from the rest of an object.  I cannot tell by reading the definition of `Book` that it generates a hash on save.