如何使用django orm 获取分组最新时间的数据
时间: 2023-12-11 16:05:27 浏览: 47
假设有一个模型类为`Order`,其中包含`created_time`和`group_id`两个字段,要求获取每个`group_id`最新的`Order`的数据。
可以使用Django ORM的`Subquery`子查询和`annotate`注释功能来实现:
```python
from django.db.models import Subquery, OuterRef, Max
# 获取每个group_id最新的created_time
latest_times = Order.objects.filter(group_id=OuterRef('group_id')).order_by('-created_time').values('created_time')[:1]
# 获取每个group_id最新的Order数据
latest_orders = Order.objects.annotate(latest_time=Subquery(latest_times)).filter(created_time=OuterRef('latest_time'))
# 打印结果
for order in latest_orders:
print(order.group_id, order.created_time)
```
首先使用`Subquery`子查询获取每个`group_id`最新的`created_time`,然后使用`annotate`注释功能将最新的`created_time`注释到每个`Order`对象中,最后再次查询获取最新的`Order`数据。