2013-01-17 2 views
0

원시 SQL을 사용하지 않고 Django에서 다음 sql join 문을 실행하는 방법을 찾으려고합니다. 그것을 할 수있는 방법이 있습니까?Django에서 join 문을 찾을 수 없습니다

Select * from playertable, seasontable where player.id = season.player_id 

다음은 나의 모델입니다.

class Player(models.Model): 
    name = models.CharField(max_length=200) 
    team = models.CharField(max_length=3) 
    position = models.CharField(max_length=3) 

class PlayerSeason(models.Model): 

    player = models.ForeignKey(Player) 
    year = models.IntegerField() 
    games_played = models.IntegerField() 
    goals = models.IntegerField() 
    assists = models.IntegerField() 
    points = models.IntegerField() 
    plusminus = models.CharField(max_length=200) 
    pim = models.IntegerField() 
    ppg = models.IntegerField() 
    shg = models.IntegerField() 
    gwg = models.IntegerField() 
    otg = models.IntegerField() 
    shots = models.IntegerField() 
    shooting_percentage = models.DecimalField(max_digits=5, decimal_places=2) 
    toi = models.CharField(max_length=200) 
    sftg = models.DecimalField(max_digits=5, decimal_places=2) 
    face_off = models.DecimalField(max_digits=5, decimal_places=2) 

을 명확히 그냥 명확히하기 위해, 나는 어떻게 장고 QuerySet이 작업을 수행해야 위의 쿼리에서 테이블 이름을 축약 사용?

+2

시즌 모델은 어디에 있습니까? 모든 시즌을 원한다면 season.player_set.all()을 수행하십시오. –

+1

모든 플레이어와 모든 시즌에 하나의 쿼리를 가져 오려고합니까? 또는 한 선수로부터 계절을 얻고 싶습니까? – diegueus9

+0

특정 플레이어와 관련된 모든 시즌을 가져 와서 모든 플레이어와 함께 할 수 있도록 그 위로 불어 넣으려고합니다. – Jake

답변

1

당신이하고 싶었던 모든이 경우 시즌에이 모델에 ForeignKeyField를 사용할 때 Django's backwards relationships

의 사용을 만들 수있는 특정 계절과 관련된 모든 선수를 얻을 수 있었다 경우, 그 모델 인스턴스를 얻을 모든 관련된 객체의 쿼리 세트를 얻을 수있는 속성.

예에서 season.player_set.all()을 사용할 수 있습니다.

계절 속성의 이름을 변경할 수있는 매개 변수 (선택 사항)를 ForeignKeyField에 전달할 수 있습니다.

-1

할 방법이 있습니까?

No. Django의 ORM은 한 번에 하나의 모델을 처리하며 두 테이블에서 열을 가져옵니다. 모델 중 하나에서 쿼리를 수행 한 다음 해당 필드에 액세스하여 관련 모델을 가져옵니다.

+0

-1 번 설명해주세요. 나는이 인상하에 있었고 아마도 유권자가 분명히 할 수 있었 을까? – dm03514

관련 문제