Отображение количества сообщений, отправленных каждой категорией пользователей
Вот что содержит message_user_id:
message_user_id = Message.objects.all()
Это мой контекстный словарь в admin.py:
'msg' : message_user_id,
Это мой Message класс в models.py:
class Message(models.Model):
message_text = fields.EncryptedTextField(blank=True, null=True)
conversation_id = models.ForeignKey(Conversation, on_delete=models.CASCADE)
origin_user = models.ForeignKey(UserInfo, on_delete=models.CASCADE, blank=False, default=None)
timestamp = models.DateTimeField(default=datetime.now, blank=True)
Это UserInfo класс:
class UserInfo(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
is_buyer = models.BooleanField(default=False)
is_seller = models.BooleanField(default=False)
is_professional = models.BooleanField(default=False)
Есть различные роли для пользователей, которые они могут выбрать при регистрации. Эта информация хранится в таблице UserInfo, на которую я ссылаюсь как на внешний ключ в поле origin_user в классе Message. origin_user в Message содержит ту же информацию, что и id в UserInfo.
Я хочу отобразить количество сообщений, отправленных каждой категорией пользователей. Как мне этого добиться?
Поскольку типов не так много, вы можете выполнить поиск для каждого типа и подсчитать, сколько сообщений есть, например, для Покупателя:
messages_of_buyers = Message.objects.select_related(
'user_info'
).filter(
user_info__is_buyer=True
).count()