Вы можете поддерживать отношение ManyToMany
следующим образом:
import uuid
class Lobby(...):
users = models.ManyToManyField(User)
game_id = models.UUIDField(default=uuid.uuid4, editable=False)
def is_occupied(self):
return self.users.count() >= 2
Затем в представлении вы можете проверить, можете ли вы добавить пользователя:
def add_user_to_lobby(request, game_id):
lobby = get_object_or_404(Lobby, game_id)
if lobby.users.filter(pk=request.user.pk).exists():
return redirect('game_page')
elif not lobby.is_occupied():
lobby.users.add(request.user)
return redirect('game_page')
else:
return render(request, "error_page.html")