django-在另一个prefetch_related中使用prefetch_related

时间:2016-07-25 14:54:56

标签: python django django-templates django-views django-queryset

我要问的最近的事情可以找到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, ...)

现在我已经可以只针对一个表执行以下操作:

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

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

1 个答案:

答案 0 :(得分:3)

此处您不需要prefetch_related。您可以使用select_related()关注从PlayerTeamDivision的外键。

players = Player.objects.select_related('team__division')

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