Как исправить неработающее удаление записи после некоторой даты в django?

Я пытаюсь удалить записи после того, как время истечения срока действия_даты меньше или равно времени текущей даты, но это не сработало должным образом.

Также выдает эту ошибку

RuntimeWarning: DateTimeField Question.date_time получило наивный datetime (2022-08-28 10:15:19) при активной поддержке часовых поясов.

API удаляет неправильные записи.

def delete(self, request):
   
    count = 0
    count, _ = Question.objects.filter(
        expiry_date_time__lte=datetime.now(timezone.utc).today()
        .strftime('%Y-%m-%d %H:%M:%S')).delete()

    print(now().today()
          .strftime('%Y-%m-%d %H:%M:%S'))

    resp = {'Total question deleted': count}
    print(resp)
    return Response(resp)

Пробовали ли вы выполнить запрос Question.objects.filter( expiry_date_time__lte=datetime.now(timezone.utc).today() .strftime('%Y-%m-%d %H:%M:%S')) и посмотреть, возвращает ли он также пустое множество? Если да, то вам нужно начать с queryset.

Более того, если ваш expiry_date_time уже имеет тип DateTimeField, вы больше не должны разбирать его в строку с помощью strftime, и, возможно, именно поэтому он не работает :)

Если у вас есть дата истечения срока действия как поле DateTimeField, зачем вы форматируете его в методе strftime, вы можете просто отфильтровать на основе datetime.now установить его в нужный вам часовой пояс.

Question.objects.filter(expiry_date_time__lte=datetime.now(tz=timezone.utc))

Это должно дать желаемый запрос, после чего вы можете обработать его в соответствии с вашей бизнес-логикой.

Вернуться на верх