django- 在另一个 prefetch_related 中使用 prefetch_related

django- Use prefetch_related inside of another prefetch_related

可以找到与我的要求最接近的内容 here

假设我有以下型号:

class Division(models.Model):
    name = models.TextField()
    state = models.IntegerField()

class Team(models.Model):
    name2 = models.TextField()
    division = models.ForeignKey(Division, ...)

class Player(models.Model):
    name = models.TextField()
    hometown = models.IntegerField()
    team = models.ForeignKey(Team, ...)

现在我已经可以为一个 table 执行以下操作:

players = Player.objects.prefetch_related('team')

我该如何将 state 添加到查询集中?我的最终目标是能够在模板内执行 player.team.division.state。另一种选择是使用嵌套 for 循环,但我想避免这种情况。

这里不需要prefetch_related。您可以使用 select_related().

跟随外键从 PlayerTeam 再到 Division
players = Player.objects.select_related('team__division')

prefetch_related 的一个用例是,如果您从 Division 查询集开始,并希望同时获取相关团队。