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

时间:2011-05-05 18:25:48

标签: python sql django

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

如果包含速度

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

它将返回id的2和3.这是否可以使用Django的数据库API?

1 个答案:

答案 0 :(得分:2)

这不是您提出的要求,但会为您提供用户ID列表及其相关的最高速度:

from django.db.models import Max
Speed.objects.values_list('user').annotate(Max('speed'))

这可能更有用:具有最高速度的用户对象列表:

User.objects.all().annotate(Max('speed__speed'))

评论后编辑嗯,您没有显示时间的来源,但假设它是Speed模型的另一个字段,它仍然相当简单:

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

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