Python 使用Django选择和排序唯一外键
我有一个名为“speed”的表,它有一个指向用户行的外键和一个名为“speed”的整型字段。我想做的是为独特的用户获得最高的速度。例如: 如果速度控制住了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可以实现这一点吗?这并不是
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和用户名。它现在按用户聚合,但只有用户值可用。有办法吗?