Как отфильтровать даты на основе диапазона для datetime в 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. Когда я запускаю скрипт, он выдает TypeError at / 'datetime.datetime' object is not iterable. Есть ли какое-нибудь решение для этой проблемы

Table structure

Поиск __range [Django-doc] ожидает 2-кортеж с датами from и to, поэтому:

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)
        )
        # …

Однако я бы посоветовал работать с формой для обработки и очистки ввода, и не использовать глобальную переменную: глобальное состояние, особенно в веб-сервере - это очень плохая идея.

Вы можете поместить даты в фильтр, чтобы найти наш диапазон между датами.

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)
Вернуться на верх