首页 > 解决方案 > 如何在 django 中指定日期范围

问题描述

我目前正在努力让我的部分代码正常工作。

我正在尝试在页面上构建三个部分:我的数据库中的每个实体都有一个“块到达时间”,我想将它们分为三个区域:

“当前计时器”,chunk_arrival_time 在过去 48 小时内的实体

“未来计时器”,chunk_arrival_time 是未来的实体

“过去的计时器”,chunk_arrival_time 超过 48 小时前的实体。

目前我有这个:

    render_items = {'moonextractions': base_query.all(),
                'current_timers': base_query.filter(
                    chunk_arrival_time__lte = timezone.now() + timezone.timedelta(days=-1)),
                'future_timers': base_query.filter(
                    chunk_arrival_time__gte=timezone.now()),
                'past_timers': base_query.filter(
                    chunk_arrival_time__lt=timezone.now()).order_by('-chunk_arrival_time')}

最上面的“当前计时器”是我正在努力解决的问题。

我需要如何格式化它以便如上所述对事物进行排序?

标签: pythondjangotime

解决方案


您必须对current_timers. 因为您正在寻找小于现在且大于或等于现在减去两天的时间。

render_items = {'moonextractions': base_query.all(),
            'current_timers': base_query
                .filter(chunk_arrival_time__lte = timezone.now())
                .filter(chunk_arrival_time__gt = timezone.timedelta(days=-2)),
            ⋮
            }

注意:您在代码中说 1 天,在解释中说 48 小时——我假设解释是正确的。此外,所写past_timers的包括没有在查询的确切时间到达的任何人。


推荐阅读