Я пытался получить список объектов модели, рандомизировать их порядок и разбить их на страницы в шаблоне. Я думал, что делал это до тех пор, пока не осознал, что при каждом вызове следующей страницы я повторно рандомизировал объекты, а не использовал ранее рандомизированный список.
Могу ли я в любом случае рандомизировать список объектов только при первом открытии страницы и после этого использовать тот же список, не рандомизируя его при переходе на следующую страницу?
Спасибо.
Views.py
class index(View):
def get(self, request):
all_items = list(Electronics.objects.all())
random.shuffle(all_items)
paginator = Paginator(items, 24)
page = request.GET.get('page')
items = paginator.get_page(page)
return render(request, 'home.html', {'items':items, 'header':'Homepage'})
home.html
<div class='container'>
<div class='row'>
{% for item in items %}
<div class='col-xs-6 col-sm-8 col-lg-4'>
<img src='{{ item.image.url|cut:"%22"|thumb}}'>
<h4>{{item.name}}</h4>
<p>$ {{item.price}}</p>
<form method='get'>
<input value='Add to cart' type='submit' formaction= "{% url 'addtocart' item.id %}">
<input value='View Details' type='submit' formaction= "{% url 'detail' item.id %}">
</form>
<div><br><br>
{% endfor %}
</div>
</div>
<div class='pagination' align='center'>
<span class='step-links'>
{% if items.has_previous %}
<a href="?page=1{% if request.GET.q %}&q={{request.GET.q}}{% endif %}">« first</a>
<a href="?page={{items.previous_page_number}}{% if request.GET.q %}&q={{request.GET.q}}{% endif %}">previous</a>
{% endif %}
<span class="current">
Page {{items.number}} of {{items.paginator.num_pages}}
</span>
{% if items.has_next %}
<a href="?page={{items.next_page_number}}{% if request.GET.q %}&q={{request.GET.q}}{% endif %}">next</a>
<a href="?page={{items.paginator.num_pages}}{% if request.GET.q %}&q={{request.GET.q}}{% endif %}">last »</a>
{% endif %}
</span>
</div>