Не обрабатывает ли обработчик post_save экземпляр? Почему вы используете его для фильтрации? Почему бы просто не сделать:
def my_handler(sender, instance=False, created, **kwargs):
if created:
instance.blah = 'hello'
instance.save()
Ваш существующий код не работает, потому что он зацикливается, и Test.objects.filter(id=instance.id)
возвращает набор запросов, а не объект. Чтобы получить один объект напрямую, используйте Queryset.get()
. Но вам не нужно делать это здесь. Созданный аргумент удерживает его от зацикливания, так как он устанавливает его только в первый раз.
В общем, если вам абсолютно не нужно использовать сигналы post_save, вы все равно должны переопределять метод save () вашего объекта.