Django中的多个可选ForeignKeys

时间:2015-08-09 10:16:18

标签: python django model foreign-keys

在开始之前:我对Django的理解处于初级水平,我无法通过谷歌找到足够的帮助。

我将从一个例子开始:

class Player(models.Model):
  ...


class Tournament(models.Model):
  ...
  first_place = models.ForeignKey(Player)
  second_place = models.ForeignKey(...)
  third_place = models.ForeignKey(...)

我的问题是:首先有多个人,第二个等等。如何以每次添加自己的玩家数量的方式实现模型?

我已经尝试了ManyToMany而不是ForeignKey但是当我尝试保存Tournament对象时,我在管理菜单中收到错误,指出必须存在ID即使我没有选择要添加的任何Player,也可以使用对象。

2 个答案:

答案 0 :(得分:2)

不知道我是否正确理解了这个问题,但是如果您想让ForeignKey成为可选项并想要添加多个Player,则可以使用ManyToManyField并设置nullblankTrue

class Tournament(...):
    ...
    first_place = models.ManyToManyField(Player, blank=True, null=True)
    ...

答案 1 :(得分:1)

这将解决您的问题,您现在可以自由地为每个玩家添加每个和任何地方。视图中的.count()函数可以获取所选玩家的对象数。如果我能理解你在这里尝试做什么,那么只要用户可以在每个类别中拥有无限的位置,就可以为用户分配一个位置,而不需要多个字段。如果您需要更多帮助,请发表评论。

Class FirstPlace(models.Model):
     first = models.ForeignKey(Player)

Class SecondPlace(models.Model):
     second = models.ForeignKey(Player)

 Class ThirdPlace(models.Model):
     third = models.ForeignKey(Player)