class Game(models.Model): def __init__(self, *args, **kwargs): super(Game, self).__init__(*args, **kwargs) #Non-django-ORM instance variables self.question_bank = [] self.answer_bank = [] self.object_id_list = [] self.qi = 0 # Question iterator self.max_questions = 10 self.player_list = [] self.question_started = None GAME_CHOICES = ( ('solo', 'Trivia Solo'), ('rtt', 'Real-Time Trivia'), ('rtd', 'Real-Time Deathmatch'), ('mtb', 'Multiplayer Turn-Based'), ) category = models.ForeignKey('Category') maxPlayers = models.IntegerField() gameType = models.CharField("Game Type", max_length=255, choices=GAME_CHOICES) started = models.DateTimeField(auto_now_add=True) finished = models.DateTimeField(default=None, null=True) players = models.ManyToManyField(User, through="Player") def __unicode__(self): return str(self.id) + " | " + self.gameType + " | " + self.category.categoryName + " | " + str(self.started) def get_questions(self): if len(self.object_id_list) != 0: self.question_bank.append(Question.objects.filter(category__categoryName=self.category.categoryName).exclude(id__in=self.object_id_list).order_by('?')[:10]) else: self.question_bank = Question.objects.filter(category__id=self.category.id).order_by('?')[:10] for q in self.question_bank: self.object_id_list.append(q.id) def update_player_list(self): player_list = [] the_players = self.players.all() player_number = 1 for player in the_players: single_player = player.player_set.get(game__id__exact=self.id) #single_player.player_number = player_number player_list.append(single_player) player_number += 1 self.player_list = player_list def get_username_list(self): username_arr = [] for player in self.player_list: tmp_obj = {} tmp_obj['name'] = player.base_user.username tmp_obj['number'] = player.player_number username_arr.append(tmp_obj) return username_arr