django中相关字段的分页结果?

时间:2014-01-13 02:34:37

标签: django model django-queryset

假设我有以下型号。

Class Blog:
  pass

class Entry:
  models.ForeignKey(Blog)

我想做这样的事情

  
      
  • 过滤器&按某些标准排序博客
  •   
  • 获取第2页的相关条目
  •   

我可以做比下面更好的事情吗?

blog_ids = Blog.objects.filter(q).order_by(order)
entry_qs = Entry.objects.filter(id__in=blog_ids)
paginator = Paginator(entry_qs)
entries = paginator.page(2)

1 个答案:

答案 0 :(得分:0)

我认为您需要在条目而不是博客对象上使用order_by。对博客条目进行排序和分页的更简单方法是使用基于类的视图,如ListView。例如。在你的views.py中:

from django.views.generic import ListView
from .models import Entry

class BlogView(ListView):
    queryset = Entry.objects.order_by("-date")
    paginate_by = 10

您需要在urls.py中提及它:

url(r'^$', BlogView.as_view(), name='home'),

现在,如果您使用/page=1之类的网址,则会显示第二页条目(传递为object_list