如何在搜索结果的对象详细信息视图中实现上一级和下一级链接



我几乎完成了我的第一个生产就绪的django项目。我还有一个大问题:我得到了一个文章搜索视图,显示了找到的文章列表。分页对于结果列表来说工作得很好。当我单击文章标题时,对象详细信息页面打开。我想要的:对象详细信息页面上的上一个和下一个结果链接。

我尝试了几种方法来解决类似的问题,但没有找到一个有效的解决方案。如果我尝试只对一篇文章使用分页器(对于object-detail-page),我需要知道结果列表中的分页器索引。但如何?

即使.get_next(previous)_by_foo-Method在这种情况下也不是真正可用的。还是我遗漏了什么明显的东西?提前感谢您的帮助!

Paginator from django with lists。在列表中搜索索引的一种方式就像这样:

['aaa', 'bbb', 'ccc'].index('bbb') # result: 1

或者像这样:

model = object()
[object(), object(), model].index(model) # result: 2

希望这能给你一些提示,告诉你如何在列表中找到paginator-index

如果您想在object-details-page上从搜索结果中获得到下一个项目的链接,您必须从搜索结果中获得下一个项目。要获得下一个项目,您需要执行与在搜索页面中执行的相同的搜索查询,并应用一些额外的过滤器,以便仅从该列表中获取下一个项目。但是这里有一个问题:在对象详细信息页面中只有对象id,而没有search-term。没有搜索词,您将无法创建搜索查询。这意味着你需要以某种方式获得搜索词。你如何得到那个搜索词?您需要以某种方式从搜索结果页面传递它。您可以将搜索词保存在session/cookie中,或者更好:您可以通过GET参数将其传递到对象详细信息页面。现在,当您在对象显示页面中搜索词时,您可以执行搜索查询,并从该查询中选择下一个和上一个对象。

我认为现在你应该能够实现这一点。如果没有,你可以展示一些你的对象细节视图的代码,也许有人会为你写一些代码。

你可以使用

<a href="?page={{ page_obj.next_page_number }}">next &raquo;</a>
<a href="?page={{ page_obj.previous_page_number }}">&laquo; previous</a>

最新更新