Ошибка - неподдерживаемые типы операндов для -: 'str' и 'datetime.timedelta' В Django

Привет всем я работаю на Django-framework, я создал функцию, где я даю параметры start_date и end_date, я пытаюсь получить предыдущую неделю start_date и end_date на основе start_date, но получаю Ошибка - unsupported operand type(s) for -: 'str' and 'datetime.timedelta', пожалуйста, помогите мне.

from datetime import datetime, timedelta, date

    def report(request):
        start_date = request.GET.get('start_date')
        print(start_date) # 2022-06-06
        end_date = request.GET.get('end_date')
        print(end_date) # 2022-06-12
        last_week_start_date=start_date - timedelta(days=7)
        last_week_end_date=last_week_start_date + timedelta(days=6)
        d_report = connection.cursor()
        d_report.execute('''select * from table where start_date=%s and end_date=%s''',[start_date,end_date])

Дата начала_даты и дата окончания_даты являются строками. Вы должны преобразовать их в объект datetime. Это должен быть формат ISO, поэтому вы можете использовать datetime.fromisoformat()

start_date = request.GET.get('start_date')
start_date = datetime.fromisoformat(start_date)
end_date = request.GET.get('end_date')
end_date = datetime.fromisoformat(end_date)

Проблема в том, что start_time является переменной типа str. Вы должны сначала преобразовать ее в объект datetime, только тогда вы сможете использовать timedelta с ней.

Для конвертации можно использовать эту кодовую базу

from datetime import datetime

datetime_object = datetime.strptime(start_time, '%Y-%m-%d')
Вернуться на верх