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

Mysql Django:从Django数据库获取下一组查询以进行异步加载,mysql,django,django-views,django-queryset,django-orm,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 ren

例如,如果我的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})
如果这10条记录显示在第1页上,我希望在用户单击第2页时显示接下来的10条记录。如何从上一次获取的记录之后的记录开始获取接下来的10条记录?我是否将第1页最后一条记录的ID发送到视图,以便可以相应地获取接下来的10条记录,或者是否有更好的方法来实现这一点?

Django为此类问题提供了工具。更改您的视图:

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

我尝试了这个方法,但无法遍历模板中的对象。我可以使用
{{experts.object\u list}
查看对象。正如你提到的,我可以通过
GET
发送页码,但我遗漏了一些东西。我检查了,它与您的答案类似,通过模板中的查询集进行迭代也是正常的,但我无法模拟结果。没有错误,我只是无法迭代。它不是Queryset数据类型。如果我在
渲染之前打印
专家
(我用过你的代码),我会得到
,但是如果我打印
专家。对象列表
我可以看到所有对象的列表,像这样
[{'id':28,'name':'q8','age':20},{'id':29,'name':'asdasd','age':26]
@hulkinBrain你怎么迭代?像这样
{%for expert in experts%}{{expert.name}{%endfor%}
不管我怎么想,我只需要将
paginator.page(page)
作为上下文而不是
experts
作为上下文。谢谢你的回答!干杯