Джанго много через - PullRequest
       9

Джанго много через

3 голосов
/ 30 сентября 2010

Если у меня есть две модели, которые имеют множество отношений со сквозной моделью, как мне получить данные из этой сквозной таблицы.

class Bike(models.Model):
   nickname = models.CharField(max_length=40)
   users    = models.ManyToManyField(User, through='bike.BikeUser')

Класс BikeUser

class BikeUser(models.Model):
   bike     = models.ForeignKey(Bike)
   user     = models.ForeignKey(User)
   comment  = models.CharField(max_length=140)

И я бы добавил пользователя к этому байку (при условии, что у меня уже есть myBike и myUser)

BikeUser.objects.create(bike = myBike, user = myUser, comment = 'Got this one at a fancy store')

Я могу получить всех пользователей на myBike с myBike.users.all (), но как мне получить свойство comment?

Я хотел бы сделать что-то вроде

for myBikeUser in myBike.users.all():
   print myBikeUser.comment

1 Ответ

6 голосов
/ 30 сентября 2010

Сквозная таблица связана стандартными ключами ForeignKeys, поэтому вы выполняете обычный поиск ForeignKey. Не забывайте, что для каждого велосипедиста есть комментарий, то есть один для каждой пары велосипед / пользователь.

for myBikeUser in myBike.bikeuser_set.all():
    print myBikeUser.comment, myBikeUser.user.first_name
...