Как смоделировать отношения один ко многим в Джанго - PullRequest
0 голосов
/ 12 декабря 2018

в моем текущем проекте Django у меня есть список игроков и список игр, и я ищу поле Django для хранения информации, в каких играх участвует игрок.В качестве примера: пользователь 1 сыграл в игру 1, 2, 3, а пользователь 2 сыграл в 2, 3 ... Так как не все игроки в игре зарегистрированы, я не ищу игру, относящуюся к игроку.Итак, я ищу что-то вроде поля «один на один» (игрок в нескольких играх).

Пока я нашел поле ForeignKey.Однако, когда я добавляю это в игру, я могу хранить только одного игрока, а не несколько идентификаторов игроков.Или я что-то пропустил?

Как мне выразить свою проблему в полях модели Django?

1 Ответ

0 голосов
/ 12 декабря 2018

Поскольку один пользователь может участвовать в разных играх, а одна игра может содержать несколько пользователей, вам может понадобиться отношение 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...