python - 使用 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 列表及其相关的最大速度:

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/

相关文章:

mysql - 简单的sql查询返回零行

python - Django CBV继承: Overriding attributes

python - 当我尝试通过 recapcha 验证我的信息时,为什么会出现此值错误?

django - Django SelectMultiple 小部件的动态选择

java - 如何在服务器端动态创建 Flash 图像?

Python/ Pandas -ValueError : Incompatible indexer with Series

python - 如何在 Django 中对模型输出进行排序?

sql - 编写原始查询时如何处理带有连字符 (-) 的 SQL 表名?即项目用户

javascript - 如何通过动态表单获取所选ID的列?

python - 每小时高效地将数据从数据存储导入到 BigQuery - Python