You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django按小时范围过滤数据的查询问题及代码求助

解决指定小时范围(跨天)的记录查询问题

你用date__range无效的核心原因是:这个参数是按完整日期时间区间过滤,而你要的是固定小时段(比如23:00-00:00)的记录,尤其是跨天场景,date__range无法直接实现仅按小时筛选的需求。

解决方案

针对跨天的小时范围查询,需要用Django的Q对象实现或条件筛选,分两种情况匹配记录:

  • 小时数大于等于23的当天记录
  • 小时数小于1(即0点)的次日记录

以下是修改后的视图代码(以23点至0点的需求为例):

def issue_report(request, pk):
    try:
        issue = Issue.objects.get(id=pk)
        # 若需固定23-0点区间,可替换原有start/end逻辑;若需保留基于issue.date_time的30分钟范围,可叠加日期条件
        if issue.merge == '2':
            pass
        else:
            issue = Issue.objects.filter(
                customer=issue.customer.id,
                merge='2',
                # 核心:筛选23点或0点的记录
                Q(date_time__hour__gte=23) | Q(date_time__hour__lt=1)
            ).order_by('date_time').first()

        a = issue.date
        x = int(a.strftime('%Y'))
        y = int(a.strftime('%m'))
        z = int(a.strftime('%d'))
        hijri = Gregorian(x, y, z).to_hijri()

        dbs = [Issue]
        transactions = sorted(
            [m
             for db in dbs
             for m in db.objects.filter(
                 customer=issue.customer.id,
                 merge='1',
                 # 给交易记录同样加上小时筛选
                 Q(date_time__hour__gte=23) | Q(date_time__hour__lt=1)
             ).order_by('date_time')],
            key=attrgetter('date_time')
        )

        # 保留原有的时间过滤逻辑(仅保留晚于issue.date_time的记录)
        transactions = [tx for tx in transactions if tx.date_time >= issue.date_time]
        transactions.insert(0, issue)

        return render(request, 'issue/report.html', context={'issue': issue, 'transactions': transactions, 'hijri': hijri})
    except AttributeError:
        return HttpResponse("<h1>将交易类型改为“不合并”。</h1>")

关键说明

  • date_time__hour是Django ORM针对datetime字段的内置查找器,可直接提取小时部分做筛选;
  • 若需同时限制日期范围(比如近7天内的23-0点记录),可叠加date__range条件,用&和Q对象组合:
    Q(date__range=(start_date, end_date)) & (Q(date_time__hour__gte=23) | Q(date_time__hour__lt=1))
    

内容的提问来源于stack exchange,提问作者pip install logic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:33:14