Я считаю, что комментарии к этому коду дают относительно хороший ответ на общий вопрос, который здесь задают:
Если вызывается select_related (None), список очищается.
https://github.com/django/django/blob/stable/1.8.x/django/db/models/query.py#L735
В общем смысле, если вы хотите что-то сделать с набором запросов entities
, но сначала удалите из него элементы select_related, entities.select_related(None)
.
Однако, это, вероятно, не решит вашу конкретную ситуацию с пагинатором. Если вы сделаете entries.count()
, то уже удалит элементы select_related. Если вы обнаружите, что происходят дополнительные СОЕДИНЕНИЯ, это может быть несколько неидеальных факторов. Может случиться так, что ORM не сможет удалить его из-за другой логики, которая может влиять или не влиять на счет в сочетании с select_related.
В качестве простого примера одного из этих неидеальных случаев рассмотрим Foo.objects.select_related('bar').count()
против Foo.objects.select_related('bar').distinct().count()
. Для вас может быть очевидным, что исходный набор запросов не содержит нескольких записей, но это не очевидно для ORM Django. В результате SQL, который выполняется, содержит JOIN, и универсального рецепта для обхода этого не существует. Даже применение .select_related(None)
не поможет вам.