내가 예를 들어, 장고 간단한 일대 다 관계가 예상대로 작동하지에 : 플레이어의 관리자 페이지 (들)에프리 페치는 일대 장고는
class Team(models.Model):
team_mascot = models.CharField(
max_length=200, null=True)
class Player(models.Model):
first_name = models.CharField(max_length=200, null=True)
last_name = models.CharField(max_length=200, null=True)
team = models.ForeignKey(
'players.Team',
blank=True, null=True,
on_delete=models.SET_NULL,
related_name='players',
related_query_name='player',
)
, I 팀에 다른 플레이어에 대한 정보를 포함하여 팀이있는 경우 해당 플레이어와 관련된 팀에 대한 정보를 표시하려고합니다. 모든 관련 플레이어에 대한 프리 페치를 사용하여이 쿼리를 현재 플레이어 팀에 최적화하려고합니다. 이 작업은 매우 간단해야하지만 올바른 프리 페치를 수행 할 수 없습니다.
는 여기에 내가 무엇을 시도했다입니다 :
def prefetch_all_team_players(self):
return self.prefetch_related(
Prefetch('team__players', to_attr='all_team_players')
)
과 :
def prefetch_all_team_players(self):
return self.select_related('team').prefetch_related(
Prefetch(
'team__players',
to_attr='all_team_players'
)
)
과 : 나는 적절한 관리자 페이지에서이를 사용하고
def prefetch_all_team_players(self):
from myproj.players.models import Team
team_queryset = Team.objects.all()
return self.prefetch_related(
Prefetch('team__players', to_attr='all_team_players', queryset=team_queryset)
)
합니다. 그러나 all_team_players
은 예상대로 채워지지 않습니다. 나는 어떤 가치도 얻지 못하고있다. player.all_team_players.all()
내게 아무것도주지 않습니다.
대안은 물론 내가 필요로하는 곳에 player.team.players.all()
을 사용하는 것입니다. 하지만 프리 페치로 성능을 얻으려고합니다.
내가 여기에없는 것에 대한 아이디어가 있습니까?