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

时间:2011-10-15 14:09:19

标签: django paginator

我差不多完成了我的第一个生产就绪的django项目。我还有一个大问题: 我有一个文章搜索视图,用于呈现找到的文章列表。对于结果列表,分页工作正常。当我单击文章标题时,将打开对象详细信息页面。我想要的:对象详细信息页面上的上一个和下一个结果链接。

我尝试了几种类似问题的方法,但没有找到可行的解决方案。如果我尝试使用只有一篇文章的paginator(对于object-detail-page),我需要知道结果列表中的paginator-index。但是如何?

即使是.get_next(上一个)_by_foo-Method在这个场景AFAICT中也不是真的可用。或者我错过了一些明显的东西?感谢您提前提供任何帮助!

3 个答案:

答案 0 :(得分:1)

来自django的Paginator与列表一起工作。一种在列表中搜索索引的方法就是这样:

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

左右这样:

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

希望能为您提供有关如何在列表中找到paginator-index的提示。

答案 1 :(得分:1)

你可以用这个

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

答案 2 :(得分:0)

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

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