Django ORM: Group by and Max
我有一个看起来像这样的模型:
1 | Requests: user, req_time, req_text |
在数据库中,记录如下所示:
1 2 3 4 | id, user_id, req_time, req_text 1 1 TIMESTAMP YES 2 1 TIMESTAMP NO 3 2 TIMESTAMP YES |
等等
如何编写Django ORM查询,该查询将:按用户对请求进行分组,根据req_text过滤请求,并选择结果集的最大ID。 因此,对于每个用户,我将返回与过滤条件匹配并具有最大ID的一行。
1 2 3 4 5 | from django.db.models.aggregates import Max request_values = Requests.objects.filter(req_text='YES') \ .values('user') \ .annotate(max_id=Max('id')) |
然后
1 2 3 4 5 6 7 | [ {'user': 1, 'max_id': 1}, {'user': 2, 'max_id': 4}, {'user': 3, 'max_id': 5}, {'user': 4, 'max_id': 12}, ... ] |