python - 订购列表中的项目,但不断收到 AttributeError
问题描述
我正在尝试按“已创建”的降序组织此列表中我创建的所有帖子。
这是我的功能:
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]}
)
就像现在一样,它只是按每个人的“创建”字段排序帖子。因此,当返回整个列表时,并非一切都井井有条。但是,如果我尝试移动到.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
是一个list,而不是 a QuerySet
,并且一个 list 没有.order_by(…)
[Django-doc]方法。您可以Post
使用单个查询查询所有人员的所有 s:
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(
creator__in=following_users
).order_by('-created')[start:end]
return JsonResponse(
{'posts': [post.serialize() for post in posts]}
)
推荐阅读
- java - 使用 Spring ApplicationContext 类路径的绝对路径加载资源文件,如(sql、txt 等)
- android - Flutter MaterialPageRoute 导航到黑色背景的屏幕时如何解决?
- java - status statuscode=places_api_access_not_configured resolution=null 问题
- javascript - erb link_to 标记内的 Vue.js 数据
- python - 无法加载或保存 txt。文件
- omnet++ - 使用静脉进行 DoS 攻击
- javascript - 如何使用 JsDoc 为 Blob 定义类型?
- hive - Hive:根据相邻行合并或标记多行
- flutter - 如何在飞镖列表中复制重复项?
- python - 具有多个 URL 的 Python Web Scraping + 合并数据