我想实施'热门'Feed。我想展示一系列最喜欢的帖子。
这是抽象模型架构。
(Model) Like
user = User
content_type = Post, User, Group
object_id = 22
(Model) Post
user = User
content = ''
created_at = '12082017'
在views.py中,我希望得到排序的查询集,如
Post.objects.order_by('-like')[:30]
由于我的Post模型没有like字段,我无法使用order_by
。
我正在考虑添加score
字段以跟踪喜欢和当前时间。你觉得它会起作用吗? :)
对于如何制作热门饲料的任何想法或建议都将受到高度赞赏。谢谢
答案 0 :(得分:1)
为此目的,您有一种称为反向通用关系的东西:
为您的帖子模型添加反向通用关系,您可以获得喜欢的数量的计数,然后根据基于流行度的排序的喜欢对其进行排序。
在你的帖子模型中添加:
likes = GenericRelation(Like)
也许使用注释进行排序:
Post.objects.annotate(like_count=Count('likes')).order_by('-like_count')
你会得到一个额外的字段' like_count '对于每个帖子对象加上它将根据喜欢的数量进行排序。