Джанго нумерация страниц не работает? - PullRequest
1 голос
/ 02 июня 2011

Похоже, что разбиение на страницы в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...