Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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 - Fatal编程技术网

Python 使用Django选择和排序唯一外键

Python 使用Django选择和排序唯一外键,python,sql,django,Python,Sql,Django,我有一个名为“speed”的表,它有一个指向用户行的外键和一个名为“speed”的整型字段。我想做的是为独特的用户获得最高的速度。例如: 如果速度控制住了 id | speed | user_id | 1 | 40 | 1 | 2 | 50 | 1 | 3 | 10 | 2 | 它将返回id的2和3。使用Django的数据库API可以实现这一点吗?这并不是

我有一个名为“speed”的表,它有一个指向用户行的外键和一个名为“speed”的整型字段。我想做的是为独特的用户获得最高的速度。例如:

如果速度控制住了

id   |   speed   |   user_id   |
1    |    40     |     1       |
2    |    50     |     1       |
3    |    10     |     2       |

它将返回id的2和3。使用Django的数据库API可以实现这一点吗?

这并不是您所要求的,但提供了用户ID及其相关最大速度的列表:

from django.db.models import Max
Speed.objects.values_list('user').annotate(Max('speed'))
User.objects.all().annotate(Max('speed__speed'))
这可能更有用:具有最大速度的用户对象列表:

from django.db.models import Max
Speed.objects.values_list('user').annotate(Max('speed'))
User.objects.all().annotate(Max('speed__speed'))
评论后编辑好吧,您不会显示时间的来源,但假设它是速度模型上的另一个字段,它仍然相当简单:

Speed.objects.filter(time__gte=fiveminutesago).values_list('user').annotate(Max('speed'))

请参阅上的文档。

唯一的问题是,我还希望对其进行时间限制。我有一个函数可以做到这一点,但我想要另一个在最后五分钟内获得最高速度的函数。我想用你刚才给的方法我做不到,差不多了。我最不想做的就是同时获取Speed对象的id和用户名。它现在按用户聚合,但只有用户值可用。有办法吗?