订购列表中的项目但不断收到 AttributeError

ordering items in a list but keep getting AttributeError

我正在尝试按 'created'.

降序排列我创建的此列表中的所有帖子

这是我的功能:

def posts_search_by_following(request, user_username):
    start = int(request.GET.get('start') or 0)
    end = int(request.GET.get('end') or (start + 9))

    profile = get_object_or_404(User, username=user_username)
    following_users = profile.get_following()
    posts = list()[start:end]
    for person in following_users:
        posts += Post.objects.filter(creator=person).order_by('-created')


    return JsonResponse(
        {'posts': [post.serialize() for post in posts]}
    )

就像现在一样,它只是按每个人的 'created' 字段对帖子进行排序。因此,当返回整个列表时,一切都不是按顺序进行的。但是,如果我尝试将 .order_by('created') 移动到其他任何地方:

{'posts': [post.serialize() for post in posts].order_by('created')}

它会给我这样的属性错误:

AttributeError at /posts/Moderator/following/search
'list' object has no attribute 'order_by'

如何获取帖子总数,然后相应地对它们进行排序?

这不起作用的原因是因为您的 posts 列表 ,而不是 QuerySet,并且列表没有 [=15] =] 方法。您可以通过单个查询查询所有人员的所有 Post

def posts_search_by_following(request, user_username):
    start = int(request.GET.get('start') or 0)
    end = int(request.GET.get('end') or (start + 9))

    profile = get_object_or_404(User, username=user_username)
    following_users = profile.get_following()
    posts = Post.objects.filter(
        <b>creator__in=following_users</b>
    ).order_by('-created')[start:end]


    return JsonResponse(
        {'posts': [post.serialize() for post in posts]}
    )