TimeField 上的 Django 过滤器

Django filter on TimeField

在我的模型中,我有一个 TimeField:

time = models.TimeField(db_index=True)

现在我必须按这个值过滤: 例如,我需要做类似的事情:time == "12:30"

**** 编辑 *****

我还需要做类似的事情:时间在一个范围内:from 12:15 to 12:15

我怎样才能做到?

你可以这样做:

YourModel.objects.filter(time__contains='16:23')

如果改用这个:

YourModel.objects.filter(time='16:23')

你永远找不到它,因为 TimeField 个对象被保存,包括毫秒:datetime.time(16, 23, 23, 952151)

编辑:

好的,假设你有字符串,你可以这样做:

begin = datetime.datetime.strptime('12:14', '%H:%M').time()
end = datetime.datetime.strptime('12:16', '%H:%M').time()
result = YourModel.objects.filter(time__range=(begin, end))