Общий список Django использует аннотации во время SQL-запроса Paginator Count - PullRequest
0 голосов
/ 16 марта 2019

При использовании общего списка Django тот же набор запросов используется для генерации paginator.count и object_list.Это имеет смысл, поскольку любая фильтрация должна отражаться в счетчике и в списке отображаемых объектов.Однако при добавлении аннотаций к набору запросов, которые не используются в фильтре, запрос подсчета без необходимости включает в себя эту дополнительную сложность.

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

Мне интересно, сталкивался ли кто-нибудь с этим и нашел ли это обходной путь.

У меня былследующие идеи:

  • переопределить общий вид списка и нумератор страниц, чтобы использовать count_queryset в CBV

  • переопределить общий вид списка иpaginator для удаления любых аннотаций из предоставленного набора запросов перед подсчетом счетчика

Я использую Django 1.11.4 и PostgreSQL 11.2.

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