2014-10-05 37 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