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

如何在Django中判断今日是否处于DateField的日期区间内?

Django日期范围查询错误:判断今日是否在促销起止日期之间

你的查询条件逻辑写反了,导致无法匹配到目标记录。

问题分析

你原查询中的条件:

Promos.objects.filter(codigo = codigo_forma, inicia__gte = today,finaliza__lte=today).exists()

要求inicia(开始日期)大于等于今日,同时finaliza(结束日期)小于等于今日——这意味着只有当促销的起止日期都等于今日,或者起止日期包含在今日之前的时段时才会匹配,完全不符合“今日处于促销时间段内”的需求。

正确的查询代码

from datetime import date

today = date.today()
# 判断今日是否在促销起止日期之间的正确查询
promo_active = Promos.objects.filter(
    codigo=codigo_forma,
    inicia__lte=today,  # 开始日期 ≤ 今日
    finaliza__gte=today # 结束日期 ≥ 今日
).exists()

逻辑说明

要验证今日是否在促销的有效时段内,需要满足两个核心条件:

  • 促销已经开始:inicia不能晚于今日(inicia <= today)
  • 促销尚未结束:finaliza不能早于今日(finaliza >= today)

对应到你的测试数据:inicia=2022-08-23 ≤ 2022-08-25,且finaliza=2022-11-30 ≥ 2022-08-25,符合上述条件,查询会返回True。

内容的提问来源于stack exchange,提问作者Jorge López

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:24:30