from django.contrib.auth.models import User from django.db import models class ChatMessage(models.Model): user = models.ForeignKey( User, on_delete=models.CASCADE, related_name="support_chats", limit_choices_to={"is_staff": False}, ) # The requester (non-admin) sender = models.ForeignKey( User, on_delete=models.CASCADE, related_name="sent_messages" ) # The sender (user or admin) content = models.TextField() timestamp = models.DateTimeField(auto_now_add=True) @classmethod def get_support_chat(cls, user): return cls.objects.filter(user=user).order_by("timestamp") @classmethod def get_all_user_senders(cls): user_ids = cls.objects.values_list("user", flat=True).distinct() return User.objects.filter(id__in=user_ids, is_staff=False)