Вы сохраняете объект queryset
в сеансе. Наборы запросов похожи на операторы SQL, но они кэшируют результаты. Вы не запускали запрос, когда помещали его в сеанс, поэтому то, что вы храните, - это, по сути, просто запрос. Когда его извлекают, он все равно остается запросом, который еще не запущен, поэтому набор запросов запускается снова. Чтобы убедиться, что вы сохраняете только фактические результаты, сделайте следующее:
request.session['results_list'] = list(results_list)
и чтобы сохранить вам другой запрос, когда вы найдете count
, вы можете ...
request.session['count'] = len(request.session['results_list'])
Также имейте в виду, что данные сеанса (по умолчанию) сохраняются в базе данных, поэтому вы, возможно, не сделаете себе никаких одолжений, храня заполненное питоном представление полных данных. На самом деле, может быть, быстрее подойти к исходному столу и вытащить его таким образом.