如何解决通过多个对象分页
因此,即使不从模板启动django-filters,分页也不起作用,我无法按所需对象的数量进行分页,而是一次显示所有对象
*注意:我并不是说两者都可以一起工作(分页和django-filter),只是我想解决分页
views.py
def music_page(request):
#pagination & filter
music = Music.objects.all().order_by('-id')
music_filter = MusicFilter(request.GET,queryset=music)
paginator = Paginator(music,6)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
try:
music = paginator.page(page_number)
except PageNotAnInteger:
music = paginator.page(1)
except EmptyPage:
music.paginator.page(paginator.num_pages)
return render(request,template_name='main/music.html',context={'music': music,'page_obj': page_obj,'filter': music_filter})
模板
<div class='card'>
{% for m in filter.qs %}
<div class='year'>{{m.Year}}</div>
<div class='song_name'>{{m.song}}</div>
{% endfor %}
</div>
解决方法
首先,您没有传递正确的查询集。您需要传递经过过滤的查询集而不是音乐。
music = Music.objects.all().order_by('-id')
music_filter = MusicFilter(request.GET,queryset=music)
filtered_music = music_filter.qs
paginator = Paginator(filtered_music,6)
然后,您必须在模板中循环浏览page_obj
才能获取对象。
<div class='card'>
{% for m in page_obj %}
<div class='year'>{{m.Year}}</div>
<div class='song_name'>{{m.song}}</div>
{% endfor %}
</div>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。