【发布时间】:2020-01-09 12:58:12
【问题描述】:
采用这些模型:
class Rocket(Model):
...
class Flight(Model):
rocket = ForeignKey(Rocket)
start_time = DateTimeField(...)
如果我想获得每枚火箭最新飞行的开始时间,这很简单:
>>> Flight.objects.values('rocket').annotate(max_start_time=Max('start_time'))
<QuerySet [
{'rocket': 3, 'max_start_time': datetime.datetime(2019, 6, 13, 6, 58, 46, 299013, tzinfo=<UTC>)},
{'rocket': 4, 'max_start_time': datetime.datetime(2019, 6, 13, 6, 59, 12, 759964, tzinfo=<UTC>)},
...]>
但是如果我想选择相同航班的 ID 而不是 max_start_time 怎么办?
换句话说,我想获取每个火箭的最新航班的 ID。
【问题讨论】:
-
如果我在这里遗漏了一些东西,我很抱歉,但是当你说“那些相同航班的 ID”时,在你给出的例子中你的意思是“3”和“4”对吗?
-
@xplo4d 这些将是火箭队的 ID。我对示例中具有
max_start_time值的航班 ID 感兴趣。 -
当然,不用做额外的查询。不保证
start_time值是唯一的。
标签: django django-orm django-aggregation