Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django计数将查询与contains匹配_Python_Django_Django Views - Fatal编程技术网

Python Django计数将查询与contains匹配

Python Django计数将查询与contains匹配,python,django,django-views,Python,Django,Django Views,我想按顺序(作为排名)显示与登录用户有更多共同点的用户。 我有以下代码: 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

我想按顺序(作为排名)显示与登录用户有更多共同点的用户。 我有以下代码:

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
我想这样:

Username A
Username B
Username A
Username B
Username B
Username C
Username B
Username A
Username C
因为用户“B”与“我”有更多的共同点

有人知道我怎么做吗

谢谢

您可以使用该课程:

或者,使用并让数据库完成以下工作:

User.objects.filter(likes__icontains=keyword)
            .exclude(id=sesion)
            .annotate(total_likes=Count('likes'))
            .order_by('total_likes')

为了论证起见,我们假设您不可能制作另一个模型

那么你能做的就是:

keywords = [word.lower() for word in me.likes.split(',')]
result = User.objects.filter(likes__in=keywords)
                     .exclude(id=sesion)
                     .annotate(most_likes=Count('likes'))
                     .order_by('most_likes')
这将把查询集的计算结果保存在一个
中,用于
您拥有的每个关键字。

当您在
用户周围执行
[]
时,您正在评估查询集。对象…

无法通过全文搜索完成此操作。。。你唯一的选择是用python对列表进行重新排序……如果你制作了一个
Like
模型,并从
User
链接成一个M2M字段,那么“Like”是关键字,类似于标记。Like是“tags”,它们在一个字段中,类似这样:“Food,python,developer,Other,Other,etc…”