Можно просто добавить внешний ключ к самому себе и булево поле is_read, отображащее, "увидел" ли автор родительского комента дочерний. Тогда достаточно будет выбрать по критерию:
- дочерний коммент
- не прочитан
Это самая простая реализация, но неоптимальная с точки зрения запросов. По крайней мере на уровне ORM django.
Можно создать отдельную таблицу, содержащие поля (условно):
- оригинальный комментарий (или любой другой объект. см "content types" )
- тип (лайк/ответ/т.д.)
- прочитан ли
Все это можно реализовать средствами django. Будет это выглядеть так, как сейчас это реализовано здесь - юзер обновляет страницу - показываются уведомления.
Если нужно в реальном времени (как в вк/тг/дискорде) используйте сокеты.