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

Django报错:TimeField不支持'between'查找,如何解决该查询问题?

解决Django中TimeField不支持__between查找的问题

嘿,这个问题我之前也碰到过!Django的ORM确实没有为TimeField实现__between这个查询查找器,所以直接用它就会抛出你看到的FieldError。不过有两种简单的替代方案可以实现你想要的效果:

方案1:使用__range查找器

__range是Django ORM支持的标准范围查询查找器,对于TimeField完全适用,它会自动转换成SQL的BETWEEN语句。修改你的查询代码如下:

from datetime import time
start_time = time(hour=17)
end_time = time(hour=18)
articles = Article.objects.filter(create_time__time__range=(start_time, end_time))

方案2:组合__gte和__lte查找器

如果你更倾向于显式的范围条件,也可以分别使用大于等于和小于等于的查找器来实现同样的逻辑:

from datetime import time
start_time = time(hour=17)
end_time = time(hour=18)
articles = Article.objects.filter(
    create_time__time__gte=start_time,
    create_time__time__lte=end_time
)

这两种写法都能正确筛选出create_time的时间部分在17:00到18:00之间的文章,你可以根据自己的习惯选择其中一种。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:43:35