3

スルーモデルと多対多の関係にある2つのモデルがある場合、その「スルー」テーブルからデータを取得するにはどうすればよいですか。

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.users.all()を使用して「myBike」​​のすべてのユーザーを取得できますが、「comment」プロパティを取得するにはどうすればよいですか?

私は次のようなことをしたいです

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

1 に答える 1

6

スルー テーブルは標準の ForeignKey によってリンクされるため、通常の ForeignKey ルックアップを実行します。バイクユーザーごとにコメントがあることを忘れないでください。つまり、バイクとユーザーの組み合わせごとにコメントがあります。

for myBikeUser in myBike.bikeuser_set.all():
    print myBikeUser.comment, myBikeUser.user.first_name
于 2010-09-30T19:04:24.680 に答える