【发布时间】:2017-09-26 14:05:31
【问题描述】:
两个模型:帖子和作者
此视图显示每个作者的最后一篇文章(作者是 ForeignKey)
我想按降序排列这些帖子,但它不起作用。
模板不断以升序方式显示这些内容。
我尝试以下方法:
views.py
class LastestListView(ListView):
context_object_name = 'posts'
model = models.Post
ordering = ['-date']
paginate_by = 10
def get_queryset(self):
return self.model.objects.filter(pk__in=
Post.objects.values('author__id').annotate(
max_id=Max('id')).values('max_id'))
或:
class LastestListView(ListView):
context_object_name = 'posts'
model = models.Post
paginate_by = 10
def get_queryset(self):
return self.model.objects.filter(pk__in=
Post.objects.order_by('-date').values('author__id').annotate(
max_id=Max('id')).values('max_id'))
解决方案
必须在查询集的开头设置排序:
class LastestListView(ListView):
context_object_name = 'posts'
model = models.Post
paginate_by = 10
def get_queryset(self):
return self.model.objects.order_by('-date').filter(pk__in=
Post.objects.values('author__id').annotate(
max_id=Max('id')).values('max_id'))
【问题讨论】:
-
需要注意的是,Post的日期通常是按id递增的,这样比较容易。 - 你想关闭似乎也可以解决的your older question 吗?
标签: django django-orm