Установить количество раундов в турнире условно (ООП, питон) - PullRequest
0 голосов
/ 28 августа 2018

Частично причина, по которой я задаю этот вопрос, заключается в том, что я не знаю, как правильно задать этот вопрос. Я пытаюсь создать калькулятор для турниров в швейцарском стиле в Джанго. В турнирах может быть разное количество раундов, поэтому мне нужно иметь возможность получать счет за каждый раунд. Вот моя модель для одиночного участника турнира:

class Speaker(models.Model):
    speaker = models.CharField(max_length = 32)
    team_name = models.ForeignKey(Team, on_delete = models.CASCADE)
    tournaName = models.CharField(max_length = 32) 
    round1 = models.IntegerField()
    round2 = models.IntegerField()
    round3 = models.IntegerField()
    round4 = models.IntegerField() #what if I only wanted three rounds? or five?
    totalScores = models.IntegerField()

    def updateTotals(self):
        self.totalScores = self.round1 + self.round2 + self.round3 + self.round4

По сути, я хочу иметь возможность создавать столько «круглых» переменных, сколько я хочу. Есть ли способ сделать то, что я хочу, или я должен переосмыслить, как я структурирую свои модели?

1 Ответ

0 голосов
/ 28 августа 2018

вот один подход к проблеме

Создание моделей RoundScore, в которых вы сохраняете счет для каждого раунда, игрока и турнира.

class RoundScore:
    player = ForeignKey(Player) # ref to the player
    tournament = ForeignKey(Tournament) # ref to the tournament
    round = Integer() # the round number
    score = Integer() # the score for this round

тогда есть модели для игрока и турнира, где вы храните информацию о них.

С этим решением вы можете иметь любое количество раундов для каждого турнира без проблем, и вы можете получить счет для каждого игрока за раунд и суммировать весь счет раунда для одного игрока в турнире.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...