我有一个非常简单的查询集和一个相关的通用视图:
f_detail = {
'queryset': Foto.objects.all(),
'template_name': 'foto_dettaglio.html',
"template_object_name" : "foto",
}
urlpatterns = patterns('',
# This very include
(r'^foto/(?P<object_id>\d+)/$', list_detail.object_detail, f_detail, ),
)
只是用于生成照片详细页面的模板:因此没有视图。
有没有简单的方法可以链接到前一个|模板中的下一个元素
没有手动编码视图?
像这样的东西:
{% if foto.next_item %}
<a href="/path/foto/{{ foto.next_item.id_field }}/">Next</a>
{% endif}
最佳答案
class Foto(model):
...
def get_next(self):
next = Foto.objects.filter(id__gt=self.id)
if next:
return next.first()
return False
def get_prev(self):
prev = Foto.objects.filter(id__lt=self.id).order_by('-id')
if prev:
return prev.first()
return False
您可以根据自己的喜好调整它们。我只是再次查看了您的问题...为了使其比使用if语句更容易,您可以使方法返回指向next / prev的链接的标记(如果存在),否则不返回任何内容。那么您只需执行
foto.get_next
等。还请记住,查询集是惰性的,因此您实际上并没有在next / prev中获得大量项目。