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

Django中如何仅通过日期查询datetime类型字段

Django DateTime字段按日期查询解决方案

核心方法1:使用ORM内置__date查询后缀(Django 1.9+ 推荐)

Django ORM为DateTime类型字段提供了__date字段查找后缀,会自动将字段值截断为日期进行匹配,自动兼容项目时区配置,无需手动处理时间范围。
代码修改示例:

from datetime import datetime

cname = request.GET['cname']
date_str = request.GET['date']
# 转换请求参数为日期对象
query_date = datetime.strptime(date_str, "%Y-%m-%d %H:%M").date()
# 按日期匹配
items = MaterialRequest.objects.filter(
    owner=cname,
    delivery_required_on__date=query_date
)

核心方法2:时间范围查询(兼容Django 1.9以下版本)

如果使用的是旧版本Django,可手动构造查询当日的起止时间区间进行过滤:

from datetime import datetime, timedelta

cname = request.GET['cname']
date_str = request.GET['date']
# 取当日0点
query_start = datetime.strptime(date_str, "%Y-%m-%d %H:%M").replace(hour=0, minute=0, second=0, microsecond=0)
# 取次日0点
query_end = query_start + timedelta(days=1)
# 匹配时间区间内的所有记录
items = MaterialRequest.objects.filter(
    owner=cname,
    delivery_required_on__gte=query_start,
    delivery_required_on__lt=query_end
)

注意事项

  • 若请求中拿到的时间字符串保留+未被转义为空格,将strptime的格式参数调整为"%Y-%m-%d+%H:%M"即可。
  • 若无需使用请求参数携带的时间部分,可直接截取字符串前10位的日期部分使用:date_str = request.GET['date'][:10]。

内容的提问来源于stack exchange,提问作者Rahul Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:45:05