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?
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'
