【问题标题】:How to filter in django to get each date latest record如何在 django 中过滤以获取每个日期的最新记录
【发布时间】:2022-01-21 05:58:46
【问题描述】:

例子

记录表

id  value  created_datetime
1   10     2022-01-18 10:00:00
2   11     2022-01-18 10:15:00
3   8      2022-01-18 15:15:00
4   25     2022-01-19 09:00:00
5   16     2022-01-19 12:00:00
6   9      2022-01-20 11:00:00

我想过滤这个表'记录表'以获得每个日期的最新值。例如有三个日期 2022-01-18,2022-01-19,2022-01-20 其中这些日期的最新值如下

Latest value of each dates are (Result that iam looking to get)
id  value  created_datetime
3   8      2022-01-18 15:15:00
5   16     2022-01-19 12:00:00
6   9      2022-01-20 11:00:00

那么如何过滤以接收上述表格的结果

【问题讨论】:

    标签: django django-models django-filter


    【解决方案1】:

    分两步完成:

    首先获取每天的最新日期时间,然后按此过滤记录。

    max_daily_date_times = Record.objects.extra(select={'day': 'date( created_datetime )'}).values('day') \
            .annotate(latest_datetime=Max('created_datetime'))
    records = Record.objects.filter(
            created_datetime__in=[entry["latest_datetime"] for entry in max_daily_date_times]).values("id", "value",
                                                                                                      "created_datetime")
    

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 2023-01-22
      • 1970-01-01
      • 2013-03-18
      • 2023-02-02
      • 2018-06-14
      • 1970-01-01
      • 2012-11-19
      • 2015-12-10
      相关资源
      最近更新 更多