Group by on filtering with the Django ORM

I need to check is there chat room. ex) user_1 and user_2 has room not make room

I upload my code and data picture.

I think It can do with group by right?

enter image description here

How can I do? Help me. Thank you!

views.py

if ChatRoom.objects.filter(member__in=[request.user, target_user]).count() < 2:
        room = ChatRoom.objects.create()
        room.member.add(request.user)
        room.member.add(target_user)

models.py

class ChatRoom(models.Model):
    id = ShortUUIDField(primary_key=True)
    member = models.ManyToManyField(
        settings.AUTH_USER_MODEL,
        through='ChatRoomMember'
    )

    class Meta:
        managed = True
        db_table = 'chat_room'


class ChatRoomMember(models.Model):
    room = models.ForeignKey(
        ChatRoom, 
        on_delete=models.CASCADE, 
    )
    user = models.ForeignKey(
            settings.AUTH_USER_MODEL,
            on_delete=models.CASCADE
    )

    class Meta:
        db_table = 'chat_room_member'


class ChatMessage(models.Model):
    room = models.ForeignKey(
        ChatRoom, 
        on_delete=models.CASCADE, 
    )
    user = models.ForeignKey(
            settings.AUTH_USER_MODEL,
            on_delete=models.CASCADE
    )
    message = models.CharField(max_length=255)
    created_at = models.DateTimeField(default=datetime.now)

    class Meta:
        managed = True
        db_table = 'chat_message'
Back to Top