我如何在 django rest 框架中使用日期时间字段来过滤两次之间的数据
how can i filter data between two time i am using date time field for it in django rest framework
我正在尝试使用日期时间字段过滤我的数据,但在我的情况下它不起作用。所以请有人向我建议如何用时间过滤我的日期
start_time = 2022-05-13 02:19:19.146009
end_time = 2022-05-13 02:20:19.146009
parser_order_mi = ParserOrderMenuItem.objects.filter(menu_item_id=menu_item_id,created_at__range=[start_time,end_end_time])
您可以使用 __range(initial_time, end_time)
方法:
start_time = 2022-05-13 02:19:19.146009
end_time = 2022-05-13 02:20:19.146009
ParserOrderMenuItem.objects.filter(timestamp__range=(start_time, end_time))
或者您也可以使用 __gte
表示大于或等于和 __lte
表示小于或等于:
start_time = 2022-05-13 02:19:19.146009
end_time = 2022-05-13 02:20:19.146009
ParserOrderMenuItem.objects.filter(timestamp__gte=start_time,timestamp__lte=end_time)
首先,您需要确定您的 Django 项目使用的是哪个时区。
您可以从 settings.py 文件中的 TIME_ZONE
变量进行检查。
假设时区是 UTC
.
from datetime import datetime
import pytz
# assume that start_time and end_time is at your local timezone
inf_time = datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S.%f")
sup_time = datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S.%f")
# convert into UTC timezone
inf_time.astimezone(pytz.timezone("UTC"))
sup_time.astimezone(pytz.timezone("UTC"))
ParseOrderMenuItem.objects.filter(created_at__gte = inf_time).filter(created_at__lte = sup_time)
如果您还没有安装pytz
,那么您可以使用命令pip install pytz
安装它。
希望你能。
我正在尝试使用日期时间字段过滤我的数据,但在我的情况下它不起作用。所以请有人向我建议如何用时间过滤我的日期
start_time = 2022-05-13 02:19:19.146009
end_time = 2022-05-13 02:20:19.146009
parser_order_mi = ParserOrderMenuItem.objects.filter(menu_item_id=menu_item_id,created_at__range=[start_time,end_end_time])
您可以使用 __range(initial_time, end_time)
方法:
start_time = 2022-05-13 02:19:19.146009
end_time = 2022-05-13 02:20:19.146009
ParserOrderMenuItem.objects.filter(timestamp__range=(start_time, end_time))
或者您也可以使用 __gte
表示大于或等于和 __lte
表示小于或等于:
start_time = 2022-05-13 02:19:19.146009
end_time = 2022-05-13 02:20:19.146009
ParserOrderMenuItem.objects.filter(timestamp__gte=start_time,timestamp__lte=end_time)
首先,您需要确定您的 Django 项目使用的是哪个时区。
您可以从 settings.py 文件中的 TIME_ZONE
变量进行检查。
假设时区是 UTC
.
from datetime import datetime
import pytz
# assume that start_time and end_time is at your local timezone
inf_time = datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S.%f")
sup_time = datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S.%f")
# convert into UTC timezone
inf_time.astimezone(pytz.timezone("UTC"))
sup_time.astimezone(pytz.timezone("UTC"))
ParseOrderMenuItem.objects.filter(created_at__gte = inf_time).filter(created_at__lte = sup_time)
如果您还没有安装pytz
,那么您可以使用命令pip install pytz
安装它。
希望你能。