Python Django筛选器对象,在过去3小时内创建了_

Python Django筛选器对象,在过去3小时内创建了_,python,django,python-3.x,django-models,date-range,Python,Django,Python 3.x,Django Models,Date Range,我知道如何按天过滤,但如何按特定时间段过滤?我需要按3,6,12,24小时进行筛选。只需使用datetime。datetime: start_date = datetime.date(2017, 1, 1) end_date = datetime.date(2017, 2, 28) camera_logs = CameraLog.objects.filter(camera_id=camera_id, created_at__range=(start_date, end_date)) 这将过滤

我知道如何按天过滤,但如何按特定时间段过滤?我需要按
3,6,12,24
小时进行筛选。

只需使用
datetime。datetime

start_date = datetime.date(2017, 1, 1)
end_date = datetime.date(2017, 2, 28)

camera_logs = CameraLog.objects.filter(camera_id=camera_id, created_at__range=(start_date, end_date))
这将过滤在午夜和凌晨3点之间创建的值


要按最近三小时进行筛选,请执行以下操作:

start_date = datetime.datetime(2017, 1, 1, 0) # hour 0
end_date = datetime.datetime(2017, 1, 1, 3) # hour 3

这是我获取当前时间的方式,然后减去3小时的范围:

# current date with minutes, seconds, and microseconds set to 0
end_date = datetime.datetime.today().replace(minute=0, second=0, microsecond=0)
# shift that date by 3 hours to get the start of the range
start_date = end_date - datetime.timedelta(hours=3)

只需将“美国/危地马拉”替换为您的时区。

我认为您需要
型号的字段。DateTimeField
,但不需要
型号。DateField
我已经有了。这就是
创建的内容。我没有访问
dateutil
的权限。我不确定您建议如何过滤过去3小时的内容。。。你能提供一个例子吗?@dcolombus更新。您想使用
datetime.timedelta
以三小时为单位移动。
from django.utils import timezone
from dateutil.relativedelta import relativedelta
import datetime
import pytz


end_date = timezone.localtime(timezone.now()).replace(tzinfo=pytz.timezone('America/Guatemala')) 
start_date = end_date + relativedelta(hours=-3)
camera_logs = CameraLog.objects.filter(camera_id=camera_id, created_at__range=(start_date, end_date))