Создайте команду Django / игрока, где порядок имеет значение
Я создаю базу данных всех гонок, выигранных спортсменами нашего клуба. Цель - иметь обзор всех выигранных гонок, а также подсчет побед для каждого спортсмена.
Человек в базе данных может быть либо спортсменом, либо тренером, либо и тем, и другим, но не во время одной и той же гонки.
В гонке могут участвовать 1, 2, 4 или 8 человек, и порядок спортсменов имеет значение, поэтому я думаю, что поле ManyToMany
не работает (показывает только до 4). Теперь я решил эту проблему с помощью 8 полей OneToOneField
. Всегда должен быть 1 спортсмен, поэтому первое поле не может быть пустым. Экипажи обычно меняются от гонки к гонке и могут отличаться по количеству спортсменов, поэтому я не стал создавать класс Crew
.
class Person(models.Model):
letters = models.CharField(max_length=10, blank = False)
name = models.CharField(max_length = 100, blank = True)
tussen = models.CharField(max_length = 50, blank = True)
lastname = models.CharField(max_length = 100, blank = False)
starting_year = models.IntegerField(blank = True)
class RaceWin(models.Model):
name = models.CharField(max_length =100, blank = False)
year = models.IntegerField(blank = False)
month = models.IntegerField(blank = True, null = True)
athlete_1 = models.OneToOneField(Person, on_delete = models.CASCADE, related_name='athlete1', blank = False)
athlete_2 = models.OneToOneField(Person, on_delete = models.SET_NULL, related_name='athlete2', blank = True, null = True)
athlete_3 = models.OneToOneField(Person, on_delete = models.SET_NULL, related_name='athlete3', blank = True, null = True)
athlete_4 = models.OneToOneField(Person, on_delete = models.SET_NULL, related_name='athlete4', blank = True, null = True)
coach = models.OneToOneField(Person, on_delete = models.SET_NULL, related_name='coach', blank = True, null = True)
Теперь мне нужно выполнить итерации над 8 ателами для проверки количества побед, но я не совсем уверен, как я могу это сделать. Есть ли лучший способ различать 8 возможных спортсменов, сохраняя их порядок?
Во-вторых, в этом примере я предположил, что все спортсмены из моего клуба, но возможны и смешанные команды. Для этих спортсменов я хочу хранить клуб, из которого они состоят, но не их starting_year
. Поэтому я придумал следующее решение для хранения различий.
class Person(models.Model):
letters = models.CharField(max_length=10, blank = True)
name = models.CharField(max_length = 100, blank = True)
tussen = models.CharField(max_length = 50, blank = True)
surname = models.CharField(max_length = 100, blank = False)
class Member(Person):
arrival_year = models.IntegerField(blank = True)
class NonMember(Person):
club = models.CharField(max_length = 100)