'Prevents saving the model in most cases
We want these models to be immutable, so the generic save() operation
will not work. These models should be instantiated through their the
model.objects.get_or_create() method instead.
The exception is that save(force_insert=True) will be allowed, since
that creates a new row. However, the preferred way to make instances of
these models is through the get_or_create() method.'

def save(self, force_insert=False, **kwargs):

    if (not force_insert):
        raise Exception('ModelWithHash    is    immutable')
    super(ModelWithHash, self).save(force_insert=force_insert, **kwargs)
