Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django分页与输入查询不匹配_Python_Django_Pagination_Django Pagination - Fatal编程技术网

Python Django分页与输入查询不匹配

Python Django分页与输入查询不匹配,python,django,pagination,django-pagination,Python,Django,Pagination,Django Pagination,我有一段类似这样的代码 page_objects = Page.objects.exclude(lorem).filter(blah).annotate(key=bar).order_by(foo) paginator = Paginator(page_objects, 50) 在我的UI上,我注意到,对于bar的某些值,我在输出中缺少行。我跑 将分页器的输出与查询的输出进行比较的实验 page_results = [] for page_number in paginator.page_ra

我有一段类似这样的代码

page_objects = Page.objects.exclude(lorem).filter(blah).annotate(key=bar).order_by(foo)
paginator = Paginator(page_objects, 50)
在我的UI上,我注意到,对于
bar
的某些值,我在输出中缺少行。我跑 将分页器的输出与查询的输出进行比较的实验

page_results = []
for page_number in paginator.page_range:
    result = paginator.page(page_number)
    page_results += result.object_list
paginator_ids = sorted([x.id for x in page_results])
page_object_ids = sorted(x.id for x in list(page_objects))
print(paginator_ids == page_object_ids) => FALSE
print(len(paginator_ids) == len(page_object_ids)) => TRUE
如您所见,查询中的对象列表与分页器中的所有对象列表不匹配。我目测检查了列表以确认这是正确的(两个列表中的ID明显不同)

我在
Django==1.11.3

发生了什么事?为什么我的分页器表现得不像文档


有趣的是,如果我将
order\u by
更改为
order\u by(foo,'id')
,则分页器的行为与预期的一样

分页器只对查询的输出进行切片。与惰性查询相结合的查询以与整个查询不必相同的顺序返回数据。简而言之,paginator或查询集没有问题,您只是比较两个以不同方式排序的列表(正如您通过添加id所注意到的)

如果这是一个排序问题,运行这段代码100次最终会得到
True
,但事实并非如此。这里的问题是,切片的总和确实缺少一些行。您能否只提取缺少的记录?有模式吗