Django 查询集过滤掉具有共同成员的对象

Django queryset filtering out objects with common members

我正在创建两步表单。在第一部分中,队长选择他的一个团队,在第二部分中,我从第一步中检索选定的团队并基于它创建查询集。第二种形式应该只过滤与第一步中没有共同球员的球队。每队只有3名队员。

class Team(models.Model):
    name = models.CharField(max_length=200, null=True, unique=True)
    captain = models.ForeignKey(Player, on_delete=models.CASCADE, related_name="captain")
    team_creation_date = models.DateTimeField(auto_now_add=True, null=True)
    players = models.ManyToManyField(Player, through="PlayerTeam", related_name="players")

class PlayerTeam(models.Model):
    player = models.ForeignKey(Player,on_delete=models.CASCADE)
    team = models.ForeignKey(Team,on_delete=models.CASCADE)
    join_date = models.DateField(auto_now_add=True)

不使用 Q 的一种解决方案是排除具有共同球员的球队。

selected_team = Team.objects.get(...) # get selected team
not_allowed_players = selected.team.players.all()
teams = Team.objects.all().exclude(players__in=not_allowed_players)