2013-01-17 28 views
0

我想弄清楚如何在Django中執行下面的SQL連接語句而不訴諸於原始的SQL。有沒有辦法做到這一點?在Django中找不到加入語句

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) 

我應該怎麼做這個用的Django QuerySet

+2

你的季節模型在哪裏?如果你想要一個賽季的所有球員只是做'season.player_set.all()' –

+1

你想要在一個查詢中獲得所有球員和所有賽季?或者你想從一個球員那裏得到他們的季節? – diegueus9

+0

我想獲得與某個特定球員相關的所有賽季,然後將其吹響,這樣我就可以與所有球員進行比賽 – Jake

回答

1

如果你想要做的一切是爲了得到一個特定季節當您使用ForeignKeyField的模型,你可以利用的Django's backwards relationships

相關聯的所有玩家,在這種情況下,新賽季,這個模型實例獲得一個允許您獲取所有相關對象的查詢集的屬性。

在你的例子中,你可以使用season.player_set.all()

您可以將一個可選參數related_name傳遞給ForeignKeyField,允許您更改季節屬性的名稱。

-1

有沒有辦法做到這一點?

編號Django的ORM一次處理一個模型,並且您從兩個表中獲取列。對任一模型執行查詢,然後訪問相應的字段以獲取相關模型。

+0

請解釋你的-1。我也有這種印象,也許選民可以澄清? – dm03514