django - 模板 Django 中未显示分页数据
问题描述
我正在从我的数据库(结合 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">« 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 »</a>
{% endif %}
</span>
</div>
</div>
结果为空,分页仅显示' Page 1 of 1'。没有显示任何元素。当我通过 set 没有分页(out)时很好。查询多个模型是否会导致此问题?我已经看到了使用 itertools 的方法,但组合查询并不是我的直接问题。或者是吗?
编辑:按照评论中提供的说明解决了这个问题。我将分页数据视为 QuerySet,而不是 Page,这反过来又使我使用了不受支持的方法并且没有显示任何结果,这是一个过失。
解决方案
推荐阅读
- omnet++ - 使用 Veins 识别节点类型
- angular - FxFlex Calc 设置最小高度,而原始值设置最大高度
- python - 启动 3dsMax 时 Python 中的 MaxPlus 出现一些错误
- php - 为什么我可以直接访问我的雄辩关系,但不能使用 with() 急切地加载它?
- firebase - Firebase 中的多个类,当我通过 Recycler Adapter 获取它时,“适配器”在不同的 if else 语句中声明。onStart 和 onStop 不起作用
- c++ - 使用char类型的glvalue访问另一种类型的对象时是否不需要导致UB
- python - 在 elmoformanylangs 中设置 config_path
- elasticsearch - 在 elasticSearch 中创建管道的问题
- google-analytics - 向客户发送请求访问邀请,以便在 Google Analytics 中获得用户访问权限
- r - ggplot2:将协方差矩阵绘制为没有行/列名的热图