Как получить перечисленные результаты запроса в Django? - PullRequest
2 голосов
/ 10 февраля 2010

У меня есть запрос, который упорядочивает таблицу в соответствии с определенным полем. Таблица связана с одним соревнованием, поэтому важно знать позицию.

Поскольку в таблице может быть много строк, я разбил ее на страницы (25 строк на страницу) с использованием общих представлений, но проблема в том, чтобы представить номерную позицию в таблице. Эта информация генерируется с помощью предложения order_by.

Result.objects.all().order_by('field')

Поскольку я использую общие представления, чтобы иметь возможность легко разбивать на страницы, у меня нет какой-либо функции представления, которая позволяла бы настраивать результаты, например, используя enumerate

Сначала я подумал об использовании forloop.counter для перечисления позиций без таблицы, но, конечно же, проблема i, когда вы представляете страницу 100, вы все равно получите числа как 1,2,3,4 , 5 ... 25 вместо 2500, 2501, 2502 ...

Я видел метод annotate(), чтобы посмотреть, смогу ли я добавить к каждому результату позицию, которую он занимает в общей сумме, но кажется, что он добавляет только статистические данные, такие как человек и так далее ...

Есть ли способ добавить к каждому результату запроса позицию, которую он занимает?

Ответы [ 2 ]

3 голосов
/ 10 февраля 2010

Если вы в своем шаблоне, вы можете использовать что-то вроде:

{{ forloop.counter0|add:page.start_index }}

Где start_index на объекте страницы разбиения на страницы дает вам начальный индекс на основе 1 для этой страницы. Конечно, наоборот лучше читаемо ...

{{ page.start_index|add:forloop.counter0 }}
0 голосов
/ 10 февраля 2010

Если речь не идет об идентификации строк во внешнем интерфейсе, почему бы не использовать первичный ключ текущей таблицы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...