2015-07-12 82 views
0

Django新手在這裏。Django一對多查詢

我創建了三種模型:樂隊,專輯和AlbumType(Live,EP,LP)。專輯有兩個外鍵(從樂隊和專輯類型)。好了,所以,在視圖中做出這樣的事情:

bandList = Band.objects.all() 

檢索所有頻段,但我無法弄清楚如何讓所有的專輯從樂隊在同樣的觀點。

任何幫助將不勝感激。謝謝。

回答

0

如果你分享你的模型定義可能會很好。但我希望這可以幫助你:

如果你想取回相冊特定頻段:

band = Band.objects.get(...) 
band_albums = Album.objects.filter(band=band) 

這將返回專輯的樂隊。

如果你想爲所有帶retrive專輯:

bandList = Band.objects.all().select_related('album_set') 

這會返回之前的禁令,但將緩存的相冊。

+0

感謝您的回答,真的很有用。這有助於我理解很多Django的東西。 –

1

默認情況下,相關對象(通過在其他模型ForeignKey)在這種情況下是band.album_set進入低谷<modelname>_set ZO(注意,這是一個管理器屬性,所以你可能會使用band.album_set.all()的大部分時間)。

我個人比較喜歡給我的ForeignKey字段a related_name,所以我可以在另一個模型上命名該屬性。下一個示例給出Band屬性band.albums

class Band(models.Model): 
    # Band definition 

class Album(models.Model): 
    band = models.ForeignKey(Band, related_name='albums') 
    # Rest of album definition 
+0

它的工作原理。多謝,夥計!。 –