繁体   English   中英

如何根据 django 中的日期时间范围过滤日期

[英]How to filter the dates based on range for datetime in django

views.py

def index(request):
    if request.method == "POST":
        from_date = request.POST.get("from_date")
        f_date = datetime.datetime.strptime(from_date,'%Y-%m-%d')
        print(f_date)
        to_date = request.POST.get("to_date")
        t_date = datetime.datetime.strptime(to_date, '%Y-%m-%d')
        print(t_date)
        global get_records_by_date
        get_records_by_date = Scrapper.objects.all().filter(Q(start_time__range=f_date),Q(end_time__range=t_date))
        print(get_records_by_date)

我需要根据日期时间字段从范围开始时间和结束时间获取日期。 当我运行脚本时,它在 / 'datetime.datetime' object 处显示 TypeError 是不可迭代的。 是否有针对特定问题的解决方案

表结构

__range查找[Django-doc]需要一个包含从和到日期时间的二元组,所以:

def index(request):
    if request.method == 'POST':
        from_date = request.POST.get('from_date')
        f_date = datetime.datetime.strptime(from_date, '%Y-%m-%d')
        to_date = request.POST.get('to_date')
        t_date = datetime.datetime.strptime(to_date, '%Y-%m-%d')
        get_records_by_date = Scrapper.objects.filter(
            some_date_field__range=(f_date, t_date)
        )
        # …

然而,我会建议使用表单来处理和清理输入,而不是使用全局变量:global state,尤其是在网络服务器中是一个非常糟糕的主意。

您可以将日期放入过滤器中以查找日期之间的范围。

import datetime

from_date=datetime.datetime.today().date()-datetime.timedelta(days=29)
to_date=datetime.datetime.today().date()
Somemodel.objects.filter(date_created__gte=from_date, date_created__lte=to_date)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM