似乎Django 1.2.3中的分页无法正常工作。我只是尝试运行一个查询,将结果分成每个200个对象的页面,并对每个页面的结果做一些事情。我可能不需要使用Paginator,但我认为这很方便。但它似乎给出了随机结果 - 即一些对象出现在多个页面上,有些不出现在任何页面上。我想这可能是在幕后运行多个数据库查询,因为我没有order_by语句,结果每次都以不同的顺序返回?好吧,我不确定为什么我的数据库(Postgres)每次都会以不同的顺序返回项目(顺便提一下数据库中的数据没有变化)。如果我在查询中添加order_by,它似乎可以解决问题。如果我在使用pg_dump / pg_restore构建的测试数据库上运行它,我似乎没有问题(我猜测试数据库以某种方式以一致的顺序返回数据)。顺便说一下,数据库中只有一个“EQIX”行。
secs = Security.objects.filter(current=True)
print 'test1'
p = Paginator(secs, 200)
for pagenumber in p.page_range:
page = p.page(pagenumber)
for i, sec in enumerate(page.object_list):
if sec.ibsymbol == 'EQIX':
print 'EQIX'
print 'test2'
for sec in secs:
if sec.ibsymbol == 'EQIX':
print 'EQIX'
trial run #1 output
test1
test2
EQIX
trial run #2 output
test1
EQIX
EQIX
EQIX
test2
EQIX