在开始之前:我对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
,也可以使用对象。
答案 0 :(得分:2)
不知道我是否正确理解了这个问题,但是如果您想让ForeignKey
成为可选项并想要添加多个Player
,则可以使用ManyToManyField
并设置null
和blank
,True
:
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)