2010-09-30 16 views
3

Si j'ai deux modèles qui ont une relation manytomany avec un modèle travers, comment puis-je obtenir des données à partir de ce tableau 'through'.django manytomany à

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

La classe BikeUser

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

Et j'ajouter un utilisateur à ce vélo (en supposant que j'ai un myBike et un myUser déjà)

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

Je peux obtenir tous les utilisateurs sur 'myBike' avec myBike.users.all() mais comment obtenir la propriété 'comment'?

Je voudrais faire quelque chose comme

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

Répondre

6

Le tableau est lié par par ForeignKeys standards, donc vous faire une recherche ForeignKey normale. N'oubliez pas qu'il y a un commentaire pour chaque bikeuser, c'est-à-dire un pour chaque couple vélo/utilisateur.

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