python - 当我在 django 中使用“链”(多模型)时,有没有办法在搜索结果中添加分页器
问题描述
我想问一下,当我使用 chian 时,是否有任何方法可以将分页器添加到我的搜索结果中,我的意思是这样的(多数据库)
我已经尝试了很多方法来做到这一点,但它不起作用
我在views.py中有这个
def search(request):
if request.method == 'GET':
query= request.GET.get('q')
submitbutton= request.GET.get('submit')
if query is not None:
home_database= Homepage.objects.filter(Q(name__icontains=query) | Q(app_contect__icontains=query) | Q(page_url__icontains=query) | Q(app_image__icontains=query))
pcprograms_database= PCprogram.objects.filter(Q(name__icontains=query) | Q(app_contect__icontains=query) | Q(page_url__icontains=query) | Q(app_image__icontains=query))
androidapk_database= AndroidApks.objects.filter(Q(name__icontains=query) | Q(app_contect__icontains=query) | Q(page_url__icontains=query) | Q(app_image__icontains=query))
androidgames_database= AndroidGames.objects.filter(Q(name__icontains=query) | Q(app_contect__icontains=query) | Q(page_url__icontains=query) | Q(app_image__icontains=query))
antiruvs_database= Antivirus.objects.filter(Q(name__icontains=query) | Q(app_contect__icontains=query) | Q(page_url__icontains=query) | Q(app_image__icontains=query))
systems_database= OpratingSystems.objects.filter(Q(name__icontains=query) | Q(app_contect__icontains=query) | Q(page_url__icontains=query) | Q(app_image__icontains=query))
pcgames_database= PCgames.objects.filter(Q(name__icontains=query) | Q(app_contect__icontains=query) | Q(page_url__icontains=query) | Q(app_image__icontains=query))
results= list(chain(home_database,pcprograms_database,androidapk_database,androidgames_database,antiruvs_database,systems_database,pcgames_database))
paginator = Paginator(results, 2) # Show 25 rows per page
page = request.GET.get('search-page')
results = paginator.get_page(page)
context={'results': results,
'submitbutton': submitbutton}
return render(request, 'html_file/enterface.html', context)
else:
return render(request, 'html_file/enterface.html')
else:
return render(request, 'html_file/enterface.html')
这在 html 中:
{% if submitbutton == 'Search' and request.GET.q != '' %}
{% if results %}
<h2> Results for <b><i style="color:#337ab7">{{ request.GET.q }}</i></b> : </h2>
<br/><br/>
{% for result in results %}
<label id="label_main_app"> <img style="margin-top:.3%;margin-left:.3%" id="img_main_app_first_screen" src="{{result.app_image.url}}" alt="no image found !" height="160" width="165" > {{result.name}} <br><br> <p id="p_size_first_page"> {{result.app_contect}} <br> <br> <a href="{{ result.page_url }}" type="button" class="btn btn-primary"><big> See More & Download </big> </a> </p>
</label>
{% endfor %}
<!–– here for moving to make new pages in search if nedded ––>
{% if results.has_other_pages %}
<ul class="pagination">
{% if results.has_previous %}
<li><a href="?q={{ request.GET.q }}&submit=Search={{ results.previous_page_number }}">«</a></li>
{% else %}
<li class="disabled"><span>«</span></li>
{% endif %}
{% for i in results.paginator.page_range %}
{% if results.number == i %}
<li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
{% else %}
<li><a href="?q={{ request.GET.q }}&submit=Search={{ i }}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if results.has_next %}
<li><a href="?q={{ request.GET.q }}&submit=Search={{ results.next_page_number }}">»</a></li>
{% else %}
<li class="disabled"><span>»</span></li>
{% endif %}
</ul>
{% endif %}
{% else %}
<h3> No results for this search </h3>
{% endif %}
{% endif %}
所有这些以及更多都对我没有帮助。所以任何想法都会帮助我,谢谢!
解决方案
推荐阅读
- loops - 为什么我的 Applescript 循环几乎总是失败?奇怪的是,它有时有效
- ios - IOS UIButton 保留周期
- javascript - Mongoose QueryStream 和请求模块
- ubuntu - 在 VSCode 和 Ubuntu 中从 go 回到定义?
- loops - kotlin 中循环和嵌套循环的区别
- java - 在java中读取文本文件,如csv文件
- kubernetes - k8s环境下如何对外暴露amqps rabbitmq协议?
- google-bigquery - 使用 BigQuery 沙箱,如何查看免费配额使用情况?
- linux - 创建每天将输出发送到文件并每月覆盖此文件的 cron 作业
- symfony - Symfony 安全中角色的高级使用