Django分页(按喜欢排序对象)

时间:2018-08-11 10:16:16

标签: django django-views

我有一个论坛,人们可以在那里提问和回答问题。 因此,可以回答的人也可以在帖子中添加喜欢的对象。我决定订购喜欢的物品。

当然,我有一个分页

我的views.py

def all_questions_max_likes(request):
    all_subjects = Subject.objects.all()
    posts = Post.objects.all().order_by('-likes')
    paginator = Paginator(posts, 4 )
    page = request.GET.get('page')
    posts_ = paginator.get_page(page)
    args = {
        'all_subjects'  : all_subjects,
        'posts'         : posts,
    }
return render(request, 'ask/questions.html', args)

这是它的样子

The image of a page

为什么Django会用3个赞来取一个对象3次?

我该如何解决?

1 个答案:

答案 0 :(得分:2)

您需要使用annotation

from django.db.models import Count
posts = Post.objects.all().annotate(num_likes=Count('likes')).order_by('-num_likes')