Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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/5/sql/85.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:从按计数排序查询中删除重复项_Python_Sql_Django_Postgresql - Fatal编程技术网

Python Django:从按计数排序查询中删除重复项

Python Django:从按计数排序查询中删除重复项,python,sql,django,postgresql,Python,Sql,Django,Postgresql,我想要一个包含最多挑选的玩家对象的列表,降序排列。 我有以下表格结构: IdLayer\u idformation\u id 111 212 313 421 这是我的FormationPlayer模型: class FormationPlayer(models.Model): formation = models.ForeignKey(Formation, related_name='players', db_index=True) player = models.Foreig

我想要一个包含最多挑选的玩家对象的列表,降序排列。

我有以下表格结构:

IdLayer\u idformation\u id
111
212
313
421

这是我的FormationPlayer模型:

class FormationPlayer(models.Model):
    formation = models.ForeignKey(Formation, related_name='players', db_index=True)
    player = models.ForeignKey(Player, related_name='+', db_index=True)
我有以下查询,返回FormationPlayer对象,按最多拾取次数(发生次数)降序排列:

FormationPlayer.objects.annotate(num_picked=Count('player_id')).order_by('-num_picked').select_related('player')
然而,这也会返回重复项,我已经尝试在末尾添加distinct(),也尝试在注释后添加distinct,但这并没有改变任何事情


我想要完成的是一份最优秀球员的名单。挑选最多的玩家是其玩家id在FormationPlayer表中出现最多的玩家。

您需要Django生成的GROUP BY表达式,如本问题所述:

因此,您的代码行将类似于

from django.db.models import Count
FormationPlayer.objects.all().values('player_id').annotate(total=Count('player_id')).order_by('total')

您需要Django生成的GROUP BY表达式,如本问题所述:

因此,您的代码行将类似于

from django.db.models import Count
FormationPlayer.objects.all().values('player_id').annotate(total=Count('player_id')).order_by('total')

这是可行的,只是我需要做一个选择相关的了。我该怎么做呢?不确定你到底想要什么,请描述一下。这是可行的,只是我也需要做一个相关的选择。我该怎么做?不确定你到底想要什么,请描述一下