Как классифицировать объекты, выбранные в ManyToManyField? - PullRequest
0 голосов
/ 02 января 2019

У меня задействованы следующие модели: Команда , Этап , Группа и 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)

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Мне кажется, я понимаю, что вы пытаетесь сделать.Если команды идут лицом к лицу, вы можете сделать две новые модели Match и Score.Матч связан с двумя командами, а затем два результата связаны с командами и матчами.

Используя эту систему, вы могли бы сообщать о счетах и ​​матчах, которые находятся внутри этапов и групп и т. Д.

Если я не совсем понимаю мою интерпретацию того, что вы пытаетесь сделать, дайте мне знать

0 голосов
/ 03 января 2019

Я думаю, что лучший способ для этого - создать новый целый класс под названием Score с двумя ForeignKey, один для Команды, один для LeaderBoard

...