All articles, tagged with “templatetag”

Просмотр SQL запросов, сделанных Django ORM

Частая задача, которая встаёт при использовании Django в серьёзных проектах — знать, какие именно запросы генерирует Django ORM. Неподготовленного человека просмотр этих SQL запросов (вернее их количества) может привести в шок ) Например, если поле объекта является ForeignKey(null=True), то при выводе этого поля у множества объектов, на каждый объект будет делаться запрос для этого поля и даже select_related() не поможет. Подобные проблемы решаются различными ухищрениями типа: — http://web-brains.com/2007/12/06/selecte_related_and_foreign_key/http://piranha.org.ua/blog/2007/10/31/related-objects/ Но рассказать я хочу не про ухищрения, о которых и так уже рассказано, а о том, как можно удобно просматривать SQL запросы для каждой конкретной страницы сайта, сделанного на Django.
 

Декоратор для удобного постраничного разбиения

Стандартное решение предлагаемое джанго для постраничного разбиения списка объектов - это класс django.core.paginator.ObjectPaginator

Здесь можно посмотреть примеры использования ObjectPaginator [djangoproject.com]

Однако, использование ObjectPaginator в голом виде не совсем удобно. В самом деле, нужно:
- извлечь номер страницы из GET-данных или URL запроса
- создать QuerySet объектов для пагинации
- создать ObjectPaginator, передав ему этот QuerySet
- получить объекты текущей страницы, путём вызова метода get_page у пагинатора