Смешение двух, вероятно, не масштабируется Когда вы создаете набор запросов или SearchQuerySet, запрос фактически не выполняется, пока вы не запросите результат где-либо, поэтому они ленивы в этом смысле.
Но если вы сделаете что-то вроде
results = [ r.pk for r in searchqueryset ]
На самом деле он выполняет этот запрос к стогу сена / solr. Если вы просматриваете в общей сложности 2 млн записей, это означает, что ваш список потенциально может вернуть 2 млн записей. И теперь вы отправляете список 2M в MySQL (используя ORM) для дальнейшей фильтрации. Это никогда не будет увеличиваться, очевидно.
Если вы просто придерживаетесь стога сена, а затем продолжаете строить свой набор запросов, он будет выполнен только один раз при доступе к результатам. Также имейте в виду уменьшить {{result.object}}, потому что это также касается базы данных для каждого результата.
Вы можете посмотреть на load_all (), огранку и т. Д.