分页数据未显示在模板Django中

时间:2019-06-03 14:13:36

标签: django pagination django-templates django-views django-pagination

我正在将查询结果从数据库(结合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而不是Page来对待,这反过来又使我使用了不受支持的方法,并且没有显示任何结果。

0 个答案:

没有答案