3、最后回顾一下,取出阅读数最大的十篇文章为什么用到4条语句:
44 article_ranking = r.zrange("article_ranking", 0, -1, desc=True)[:10]
45 article_ranking_ids = [int(id) for id in article_ranking]
46 most_viewed = list(ArticlePost.objects.filter(id__in=article_ranking_ids))
47 most_viewed.sort(key=lambda x: article_ranking_ids.index(x.id))
- 从sorted_set里面取出排名前10的10个对象,列表返回,列表的元素是articleid,而不是article本身
- article_id是str,把str转成int。
- 拿着10个article_id组成的列表筛选出10个article的列表,filter返回的结果又成乱序。
- 对10个article的列表按阅读量重新排序。