Estas cerca pero en lugar de sobreescribir __init__ save es lo que debes sobreescribir.
Mas o menos seria asi:
Código:
class Foo....
def save(self, *args, **kwargs):
if not self.pk:
Notification.objects.create(foo=foo, bar=bar)
super...
Ya con eso te puedes dar la idea, ya tu ve si lo quieres poner antes o despues de guardar.
Ah me olvidaba, tambien podrias ver los signals quizas te sirva en lo que planees luego.