Разбитые на страницы данные не отображаются в шаблоне Django - PullRequest
0 голосов
/ 03 июня 2019

Я отправляю результат запроса из моей базы данных (объединяющей 3 модели) в один из моих шаблонов, позволяя пользователям фильтровать вывод.Отображение всей необходимой информации работает просто отлично, пока я не попытаюсь разбить результаты на страницы.Затем я получаю пустой QuerySet и «Страница 1 из 1» внизу.Это полностью сбивает меня с толку, поскольку необработанный набор загружается в шаблон без каких-либо помех.

Вот мои views.py:

products =Product.objects.all()
out = Sets.objects.filter(
    ItemInSet__item__name__in=Product.objects.filter(metrics=1).values_list('product_name', flat=True)
).exclude(
    ItemInSet__item__name__in=Product.objects.filter(metrics=0).values_list('product_name', flat=True)
).distinct()

page = request.GET.get('page', 1)
paginator = Paginator(out, 10) # show 10 per page
try:
    out_p = paginator.page(page)
except PageNotAnInteger:
    out_p = paginator.page(1)
except EmptyPage:
    out_p = paginator.page(paginator.num_pages)

return render(request, 'item_list.html', {'products': products, 'results': out_p})

И мой шаблон:

<table id="id_item_list" >
{% if results.all  %}
    {% for result in results %}
        <tr>
        <form method="GET">
            {% csrf_token %}
            <ul>
                 <a href="/result/{{result.slug}} class="list-group-item list-group-item-action">
                <h4>{{ result.name|title }}</h4>
                <!-- and few more objects from Sets and ItemInSets etc. -->
                </a>               
            </ul>
        </form>
    </tr>
    {% endfor %}
{% else %}
    <p>No Sets matched your criteria.</p>
{% endif %}
</table>
<div class="pagination">
    <span class="step-links">
    {% if results.has_previous %}
        <a href="?page=1">&laquo; first</a>
        <a href="?page={{ results.previous_page_number }}">previous</a>
    {% endif %}
    <span class="current">Page {{ results.number }} of {{results.paginator.num_pages }}.</span>
    {% if results.has_next %}
        <a href="?page={{ results.next_page_number }}">next</a>
        <a href="?page={{ results.paginator.num_pages }}">last &raquo;</a>
    {% endif %}
    </span>
    </div>
</div>

Результаты пусты, а нумерация страниц показывает только Страница 1 из 1 .Элементы не отображаются вообще.Когда я передаю набор без нумерации страниц ( out ), это нормально.Вызывает ли проблема проблему с несколькими моделями?Я видел подход с itertools, но объединение запросов не является моей непосредственной проблемой.Или это так?

Редактировать: следуя инструкциям в комментариях, проблема решена.Я обработал разбитые на страницы данные как QuerySet, а не как страницу, что, в свою очередь, заставило меня использовать неподдерживаемый метод и не дало никаких результатов, просто так.

...