2011-05-05 43 views
1

我有一个名为'speed'的表,它具有一个用户行的外键和一个名为'speed'的整数字段。我想要做的是获得独特用户的最高速度。例如:使用Django选择和排序唯一外键

如果速度包含

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

它将返回ID的2和3。这可能使用Django的数据库API?

回答

2

这是不太你问什么,但给你的用户ID和它们相关联的最大速度列表:

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')) 

请参阅有关ordering of annotate and filter clauses的文档。

+0

唯一的问题是我也希望限制它。我有一个这样做的功能,但我希望在最后五分钟内获得最高速度的另一个功能。我不认为我可以用你刚才给出的方法做到这一点。 – 2011-05-05 18:44:39

+0

几乎在那里。我最不喜欢的是获得Speed对象的id以及用户名。它现在按用户进行汇总,但只有用户值可用。任何方式来做到这一点? – 2011-05-05 19:54:50

+0

感谢您的帮助! – 2011-05-05 19:54:59