J'essaye de créer des modèles qui représentent un swiss tournament, avec plusieurs tours. A chaque tour, tout le monde sera jumelé avec un autre joueur, sauf dans le cas où il y a un joueur impair, quand un joueur aura un bye.Modélisation d'un tournoi swiss à Django
J'ai besoin de garder une trace du résultat de chaque appariement; c'est-à-dire, quel joueur a gagné. En outre, j'aimerais être capable de rechercher plus efficacement tous les joueurs qui ont déjà joué contre un joueur donné.
Les choses évidentes:
class Tournament(models.Model):
name = models.CharField(max_length=80)
class Player(models.Model):
name = models.CharField(max_length=80)
Au début, je comptais avoir une classe « TournamentPairing » qui avait l'air quelque chose comme ceci:
class TournamentPairing(models.Model):
tournament = models.ForeignKey(Tournament)
round = models.IntegerKey()
player1 = models.ForeignKey(Player)
player2 = models.ForeignKey(Player, null = True) # In case of a bye, this is None.
outcome = models.CharField(max_length=1) # player1 wins, loses, bye, or tie
Mais que ça fait genre de aki, en particulier la partie à propos de player2 étant Aucun parfois. En outre, je ne pense pas que cela facilite la recherche très bien (puisque le joueur que nous recherchons pourrait être dans la fente player1 ou player2).
Y a-t-il un meilleur moyen? Je soupçonne que mon django noob-ness me retient de trouver la bonne solution ici.
Voulez-vous mettre en œuvre l'algorithme d'appariement ainsi? – Svante
Nous pouvons avoir une meilleure idée si vous répertoriez les recherches/opérations sur les appariements. – muhuk