личные сообщения делаются с комнатой в имени которой есть id юзера. Вот и все дела. При входе в чат входим в комнату общую(если надо) + в личную
self.room_name = f'{self.room_name}_{self.scope["user"].id}'
@classmethod
def return_user_age(cls, user_id):
user = cls.objects.get(id=user_id)
return user.age
Можно еще написать менеджер для модели и разрулить через него. Можно сделать еще @property и можно просто методы модели, вариант зависит от способов использования этого всего добра в коде.
Идея, на сколько я понял, в выводе внизу таблички че-то типа строки тотал? для DRF тут надо написать класс пагинатора, который, кроме списка результатов, будет выдавать еще и сумму всех(вообще всех, а не только с текущей страницы, если только для текущей надо - то можно и на клиенте посчитать).
Либо 2 вариант - просто сформировать ручками нужный жсон и отдать в ответе.
Я бы просто положил список типа такого в ListField [0,0,0,1,1,0,0], а если надо время, то такой же, но двумерный массив 24/7 и в UI потом удобно и красиво можно запихнуть в виде сетки с отмеченными квадратиками.