如何访问Django ManyToManyField的“through”对象?

时间:2010-03-20 17:13:15

标签: python django

我的Django应用程序中有以下模型。我如何从Team模型中找到在成员资格模型中已接受为True的所有User个对象?我知道我需要使用Team.objects.filter(),但我不确定如何检查accepted字段的值。

from django.contrib.auth.models import User
class Team(models.Model):
    members = models.ManyToManyField(User, through="Membership")

class Membership(models.Model):
    user = models.ForeignKey(User)
    team = models.ForeignKey(Team)
    accepted = models.BooleanField(default=False)

2 个答案:

答案 0 :(得分:1)

接受团队成员:

team_42.members.filter(membership__accepted=True)

小组用户alice已被接受:

alice.team_set.filter(membership__accepted=True)

我相信您希望获得Team或User对象的集合,而不是中间Membership对象的集合。你自己回答了这个问题,但答案给出了一组会员对象。

答案 1 :(得分:-1)

Team.objects.filter(members__accepted__exact=True)

看看this。它有很多很好的例子和解释。