我有一个名为“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'))
评论后编辑好吧,您没有显示时间来自哪里,但假设它是速度模型上的另一个字段,它仍然相当简单:
Speed.objects.filter(time__gte=fiveminutesago).values_list('user').annotate(Max('speed'))
请参阅 ordering of annotate and filter clauses 上的文档.
关于python - 使用 Django 对唯一外键进行选择和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5902443/