如何使Django Queryset选择组中具有最大值的记录 [英] How to make Django Queryset that selects records with max value within a group
本文介绍了如何使Django Queryset选择组中具有最大值的记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的Django类:
Here is my Django class:
class MyClass(models.Model):
my_integer = models.IntegerField()
created_ts = models.DateTimeField(default=datetime.utcnow, editable=False)
我想为每个唯一值<$ c $检索具有最新的 created_ts
的 MyClass
的实例C> my_integer 。我不知道该怎么做。
I would like to retrieve the instances of MyClass
that have the latest created_ts
for each unique value of my_integer
. I cannot figure out how to do it.
有人可以显示我的做法吗?
Can someone show my how to do it?
推荐答案
这将有助于您
from django.db.models import Count, Max
MyClass.objects.values('my_integer').annotate(count=Count("my_integer"),latest_date=Max('created_ts'))
表中的数据
my_integer created_ts
- -----------
1 2015-09-08 20:05:51.144321+00:00
1 2015-09-08 20:08:40.687936+00:00
3 2015-09-08 20:08:58.472077+00:00
2 2015-09-08 20:09:08.493748+00:00
2 2015-09-08 20:10:20.906069+00:00
输出
[
{'count': 2, 'latest_date': datetime.datetime(2015, 9, 8, 20, 8, 40, 687936, tzinfo=<UTC>), 'my_integer': 1},
{'count': 2, 'latest_date': datetime.datetime(2015, 9, 8, 20, 10, 20, 906069, tzinfo=<UTC>), 'my_integer': 2},
{'count': 1, 'latest_date': datetime.datetime(2015, 9, 8, 20, 8, 58, 472077, tzinfo=<UTC>), 'my_integer': 3}
]
这篇关于如何使Django Queryset选择组中具有最大值的记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文