我对Django和oo相对较新,所以我可能会缺少明显的东西,但是我无法围绕如何建模以下内容:

  • 我有位置。

  • 我有游戏。

每个位置都可以拥有尽可能多的游戏,并且游戏可以位于多个位置(这些游戏是“垄断”,游戏标题中的游戏,而不是特定的实例)。

这足以与M2M关系建模:

class Location(models.Model):
    name = models.CharField(max_length=300)
    city = models.CharField(max_length=300)
    [ etc etc ]
    games = models.ManyToManyField('Game', related_name='locations', blank=True)


class Game(models.Model):
    name = models.CharField(max_length=300)
    manufacturers = models.ForeignKey('Manufacturer')
    [ etc etc ]

我也有通常的Django用户模型。

现在,我要添加这种关系的是分数的概念。

用户应该能够输入其在特定位置的游戏的分数。然后,我应该能够在一个位置中显示每场比赛的前10个得分,但也是全球在所有位置的全球10分。

因此,基本上应该有一个分数链接到用户,游戏和位置。

在我看来,它应该是与关系本身的某种类型的关系。我在M2M关系和中介模型上查看了额外的字段,但我无法找到正确执行此操作的方法。

任何指针都很高兴。

谢谢!

有帮助吗?

解决方案

如果要链接到游戏和位置之间的selotionship,则需要创建中介模型。这是示例代码

class Location(models.Model):
    name = models.CharField(max_length=300)
    city = models.CharField(max_length=300)
    [ etc etc ]
    games = models.ManyToManyField('Game', related_name='locations', blank=True, through='GameLocation')


class Game(models.Model):
    name = models.CharField(max_length=300)
    manufacturers = models.ForeignKey('Manufacturer')
    [ etc etc ]

class GameLocation(models.Model):
    game = models.ForeignKey(Game)
    location = models.ForeignKey(Location)
    # some other filed like for example date

class Score(models.Model):
    user = models.ForeginKey('user')
    gamelocation = models.ForeginKey('GameLocation')
    score = models.DecimalField(max_digits=5, decimal_places=2)

顺便提一句。我会重命名你的 GameGameType 然后致电 GameLocation 简单a Game.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top