如何对在ManyToManyField中选择的对象进行分类?

时间:2019-01-02 15:13:39

标签: python django django-models model django-forms

我涉及以下模型:团队阶段小组排行榜

一个团队和其他团队一起在的锦标赛的每个阶段中进行比赛,而我将成为 LeaderBoard >模型以存储组的等级。我在之外使用排行榜,因为它可能是循环赛(我需要)或淘汰赛(我不需要)。 我不能只在 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 :(得分:1)

我想我了解您正在尝试做什么。如果团队要正面交锋,则可以制作两个新的“比赛”和“得分”模型。比赛与两个团队相关,然后两个分数与团队和比赛相关。

使用该系统,您可以报告阶段和小组等中的得分和比赛。

如果我对您要做什么的理解还很遥远,请告诉我

答案 1 :(得分:0)

我认为最好的方法是设置一个名为Score的新全班,其中包括两个ForeignKey,一个用于团队,一个用于LeaderBoard