订购列表中的项目但不断收到 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]}
)
我正在尝试按 '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]}
)