Отображение количества сообщений, отправленных каждой категорией пользователей

Вот что содержит 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()
Вернуться на верх