如何在Django中建立一对多关系

时间:2018-12-11 22:20:23

标签: django model foreign-keys one-to-many

在我当前的Django项目中,我有玩家列表和游戏列表,并且我正在寻找Django字段来存储玩家参与哪些游戏的信息。举个例子:用户1玩游戏1、2、3,用户2玩游戏2、3 ... 由于并非游戏的所有玩家都已注册,因此我并不是在寻找与玩家的关系游戏。因此,我正在寻找诸如“一对多”领域(一些游戏的玩家)之类的东西。

到目前为止,我找到了ForeignKey字段。但是,当我将其添加到游戏中时,我只能存储一个玩家,而不能存储多个玩家ID。还是我错过了什么?

如何在Django模型字段中表达我的问题?

1 个答案:

答案 0 :(得分:0)

就一个用户可以参加不同的游戏,而一个游戏可以包含多个用户而言,您可能需要 ManyToMany 关系。 您可以将用户作为 ManyToMany 字段添加到Game模型中:

users = models.ManyToManyField('User')

要将用户添加到游戏中,您可以执行以下操作:

game = Game.objects.get(...)
user1 = User.objects.get(...)
user2 = User.objects.get(...)
users = [user1, user2]
game.users.add(*users)

如果您想查看特定游戏的所有用户:

game = Game.objects.get(...)
game.users.all()

如果您想查看特定用户参加了哪些游戏:

user = User.objects.get(...)
user.game_set.all()