Django:从Django数据库中获取下一组查询以进行异步加载

时间:2018-02-06 08:04:04

标签: mysql django django-views django-queryset django-orm

例如,如果我的Django表有数百行,并且最初在视图中,我会以下列格式获取前10条记录以显示在网页上。

def fetchtExperts(request):
    if request.method == "GET":
        experts = Experts.objects.exclude(client_assigned=None).values('id', 'name', 'age').order_by('qualification')[:10]

    return render(request, 'index.html', {'experts': experts})

如果在第1页上显示这10条记录,我希望当用户点击第2页时显示接下来的10条记录。如何从最后一条提取的记录之后的记录开始获取接下来的10条记录?我是否将第1页的最后一个记录的ID发送到视图,以便我可以相应地获取接下来的10条记录,或者是否有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

Django为这类问题提供了enableHiveSupport工具。改变你的观点:

from django.core.paginator import Paginator

def fetchtExperts(request):
    experts = Experts.objects.exclude(client_assigned=None).values('id', 'name', 'age').order_by('qualification')
    paginator = Paginator(experts, 10) # Show 10 contacts per page

    page = request.GET.get('page')
    experts = paginator.get_page(page)
    return render(request, 'list.html', {'experts': experts})

使用此方法,您需要将页码作为GET参数传递:http://mypage.com/view?page=1