2014-10-05 15 views
1

讓我們假設我有2種型號:藝術家專輯(與具有藝術家一個外鍵關係專輯)......現在我想用一個分頁顯示所有專輯ListView,但我想顯示他們按藝術家分組。我知道django提供了一個強大的標籤:regroup ...但是當然我不能使用它來分頁我的結果,因爲一些藝術家專輯可能沒有從數據庫中檢索到......所以我的問題是:我如何使用Django的ORM來完成這個任務?Django的ListView的分頁功能和分組

的目標是要打印的東西,如:

Artist 1 
- album 1 
- album 2 
- album 3 

Artist 2 
- album 1 
- album 2 

... 
+0

所以你要顯示的專輯 - 分組由藝術家,但不顯示藝術家的名字?你想如何排序結果?由藝術家姓名,專輯名稱?一張專輯只有一位藝術家嗎? – 2014-10-05 09:39:04

+0

我也想顯示藝術家的名字當然,一個專輯只有一個藝術家 – daveoncode 2014-10-05 09:40:43

回答

2

在你的模板,你可以爲藝術家獲取相關專輯:

<ul> 
{% for artist in object_list %} 
    <li> {{ artist }} 
    <ul> 
    {% for album in artist.album_set.all %} 
     <li>{{ album }}</li> 
    {% endfor %} 
    </ul> 
    </li> 
{% endfor %} 
</ul> 
+0

但這會觸發一個查詢每個藝術家...我想避免多個查詢 – daveoncode 2014-10-05 09:55:36

+0

你可以通過做一個'select_related'在你的ListView – 2014-10-05 09:56:30

+0

不,我解決了......我必須使用'prefetch_related',因爲我使用的是反向關係!查詢是:Artist.objects.prefetch_related('albums')...無論如何感謝,幫助,我要標記你的答案被接受;) – daveoncode 2014-10-05 10:09:01