【发布时间】:2021-07-21 14:01:44
【问题描述】:
鉴于以下模型:
浏览器
| id |
|---|
| 1 |
| 2 |
| 3 |
会话
| id | last_activity | browser |
|---|---|---|
| 1 | 2021-01-01 | 1 |
| 2 | 2021-01-02 | 1 |
| 3 | 2021-01-03 | 2 |
| 4 | 2021-01-04 | 2 |
| 5 | 2021-01-05 | 3 |
我想为每个唯一的Browser 选择具有最新last_activity 的Session 对象,在本例中为:
会话
| id |
|---|
| 2 |
| 4 |
| 5 |
我试过Session.objects.values('browser').annotate(Max('last_activity')),但这并没有给出实际的Session 实例。这在 Django 中可行吗?
如果可能,我想避免使用原始 SQL,并避免循环查询集。
注意:这是一个 sqlite 后端,所以DISTINCT ON 不起作用。
【问题讨论】:
标签: python django django-models django-queryset