Как исправить неработающее удаление записи после некоторой даты в 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))
Это должно дать желаемый запрос, после чего вы можете обработать его в соответствии с вашей бизнес-логикой.