У меня задействованы следующие модели: Команда , Этап , Группа и LeaderBoard .
A Команда играет в каждой Стадии турнира в Группе с другими командами, и я хотел бы LeaderBoard модель для хранения звание группы. Я использую таблицу лидеров за пределами Group , потому что это может быть циклический перебор (мне это нужно) или нокаут (мне это не нужно).
Я не могу просто установить поле оценки в Team , потому что на каждом Этапе оно сбрасывается, и мне нужно повторно использовать старые.
Так что я думаю (возможно, есть лучшее решение), мне нужно в LeaderBoard своего рода словарь, где все команды, которые я выбираю в ManyToManyForm, сохраняются со своими результатами.
Вот мой очищенный файл models.py (извините за немного итальянского в нем):
class Stage(models.Model): # Fase
tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE, related_name='stages')
class Group(models.Model): # Girone
FORMAT_TYPES = (('Round-Robin', "All'italiana"), ('Elimination', 'Ad eliminazione'))
stage = models.ForeignKey(Stage, on_delete=models.CASCADE, related_name='groups')
format = models.CharField(max_length=4, choices=FORMAT_TYPES, blank=True)
teams = models.ManyToManyField(Team)
class LeaderBoard(models.Model):
group = models.OneToOneField(Group, on_delete=models.CASCADE, blank=True, null=True)