django Manytomany 通过

发布于 2024-09-25 10:54:27 字数 756 浏览 1 评论 0原文

如果我有两个模型与直通模型具有多对多关系,那么如何从该“直通”表中获取数据。

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”上的所有用户,但是如何获得“评论”财产?

我想做类似的事情

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

If I have two Models that have a manytomany relationship with a through model, how do I get data from that 'through' table.

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

The BikeUser class

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

And I would add a user to that bike (presuming I have a myBike and a myUser already)

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

I can get all the users on 'myBike' with myBike.users.all() but how do I get the 'comment' property?

I would like to do something like

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

离笑几人歌 2024-10-02 10:54:27

直通表由标准外键链接,因此您可以执行正常的外键查找。不要忘记每个自行车用户都有一个注释,即每个自行车/用户配对都有一个注释。

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

The through table is linked by standard ForeignKeys, so you do a normal ForeignKey lookup. Don't forget that there's a comment for each bikeuser, ie one for each bike/user pairing.

for myBikeUser in myBike.bikeuser_set.all():
    print myBikeUser.comment, myBikeUser.user.first_name
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文