假设我有以下型号。
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)
答案 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
)