Я создаю модель, в которой два игрока участвуют в соревновании. Я склоняюсь к этой модели:
def match(models.Model):
player = ForeignKey(Player)
opponent = ForeignKey(Player)
score = PositiveSmallIntegerField()
games_won = PositiveSmallIntegerField()
games_lost = PositiveSmallIntegerField()
won_match = BooleanField()
Однако есть статистика, и для того, чтобы найти подходящую запись для оппонента, потребуется еще одно нажатие, если я захочу полностью описать матч.
В качестве альтернативы я мог бы настроить модель для включения полной статистики:
def match(models.Model):
home_player = ForeignKey(Player)
away_player = ForeignKey(Player)
home_player_score = PositiveSmallIntegerField()
away_player_score = PositiveSmallIntegerField()
...
Но это выглядит одинаково плохо, поскольку мне пришлось бы сделать два логических набора для одного игрока (чтобы найти его оценки, когда он home_player и его оценки, когда он away_player ). 1013 *
Последний вариант - сделать две вставки на матч, с полной статистикой и сохранить избыточные данные в таблице.
Кажется, что есть лучший способ, и поэтому я опрашиваю SO .