【发布时间】:2020-10-21 15:58:12
【问题描述】:
我正在创建两步表单。在第一部分,队长正在选择他的一个团队,第二部分我从第一步中检索选择的团队并基于它创建查询集。第二种形式应该只过滤与第一步没有共同球员的球队。每支球队只有 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)
【问题讨论】:
-
我看到你在这里有团队和玩家的双重连接。您只需要在 Team 模型中保留一个 player = ManyToMany 或在 Team 模型中保留 player = ForeighKey(Player)。
-
@SergeyPugach 不,PlayerTeam 是 Team 和 Player 之间的 ManyToMany 的直通模型(模型未在问题中显示),所以这是正确的。
标签: django orm django-queryset