Вы можете отключить и повторно подключить сигнал. Попробуйте использовать оператор with:
с этим служебным классом:
class SignalBlocker(object):
def __init__(self, signal, receiver, **kwargs):
self.signal = signal
self.receiver = receiver
self.kwargs = kwargs
def __enter__(self, *args, **kwargs):
self.signal.disconnect(self.receiver)
def __exit__(self, *args, **kwargs):
self.signal.connect(self.receiver, **self.kwargs)
Теперь вы можете использовать:
with SignalBlocker(post_save, my_post_save_handler):
instance.save()