如何查询我的django模型的manyToMany字段?

时间:2012-07-05 19:22:04

标签: django django-queryset

我正在开发一个django app来管理我的曲棍球池,而我在定义查询时遇到了麻烦。相关模型看起来像这样:

class Player(models.Model):
    name = models.CharField(max_length=100)

class Team(models.Model):
    pool = models.ForeignKey(Pool)
    manager = models.ForeignKey(User)
    active_players = models.ManyToMany(Player)

在我的一个观点中,我想通过每个玩家,并找出该玩家是否归某人所有。如果不是,则将它们添加到传递给模板的列表中。

除了查询以确定他们是否是具有某个pool.id的团队之外,我的所有工作都在运行,这些团队在其active_player列表中有一个特定的玩家。到目前为止我有这个:

players = Player.objects.all()
for player in players:
    teams = Team.objects.filter(???not sure what to put here???)
    #and then something here to check if teams is empty

感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:3)

如果你有玩家,那么你可以通过以下方式访问玩家被分配到的团队:

player.team_set.all()

如果您只想获得一个不在团队中的球员名单,那就更容易了:

Player.objects.filter(team__isnull=True)

答案 1 :(得分:0)

尝试这样的事情:

without_team = []
for player in Player.objects.all():
    if not Team.objcets.filter(active_players__in=[player]):
        without_team.append(player)

未经测试的代码段