我想按顺序(作为排名)显示与登录用户有更多共同点的用户。我有这样的代码:
me = User.objects.get(pk=sesion)
keywords = me.likes
result = []
for keyword in keywords.split(','):
result += list(User.objects.filter(likes__icontains=keyword).exclude(id=sesion))但这段代码显示的内容如下所示:
Username A
Username B
Username A
Username B
Username B
Username C我希望是这样的:
Username B
Username A
Username C因为用户"B“和”我“有更多的共同点。
有人知道我是怎么做到的吗?
谢谢
发布于 2013-05-22 18:41:51
您可以使用Counter类:
>>> Counter(result).most_common()
[('b', 3), ('a', 2), ('c', 1)]或者,使用Count并让数据库来做这些事情:
User.objects.filter(likes__icontains=keyword)
.exclude(id=sesion)
.annotate(total_likes=Count('likes'))
.order_by('total_likes')https://stackoverflow.com/questions/16689542
复制相似问题