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



在我当前的Django项目中,我有玩家列表和游戏列表,我正在寻找一个Django字段来存储玩家参与游戏的信息。举个例子:用户1玩了游戏1、2、3,用户2玩了2、3。。。由于并不是所有的玩家都注册了,所以我不想寻找玩家之间的关系游戏。所以,我正在寻找一个可以上场的球员。

到目前为止,我找到了ForeignKey字段。然而,当我把这个添加到游戏中时,我只能存储一个玩家,而不能存储几个玩家id。还是我错过了什么?

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

只要一个用户可以参与不同的游戏,并且一个游戏可以包含多个用户,您可能需要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()

最新更新