关于python:比较Django中的offset-naive和-aware datetimes

Comparing offset-naive and -aware datetimes in Django

假设我在一个数组中有一个日期列表,我只想保留那些过期的日期,以便以后删除它们。但我正在尝试对数组中的每个日期传递if条件,并只打印过期的日期。问题是我不理解如何使用Python。

以下是我的想法:

1
2
3
4
5
# model.objects.all() contains the dates of each objects

for data in model.objects.all():
    if data.created_date < datetime.datetime.now() - datetime.timedelta(seconds=20):
        print(data.created_date)

上面的代码给出了这个错误:

TypeError: can't compare offset-naive and offset-aware datetimes

我做错了什么,解决方法是什么?


1
2
3
from django.utils.timezone import now, timedelta

expired_date = now() - timedelta(seconds=20)

如果你想看他们:

1
2
3
4
model_list = YourModel.objects.filter(created_date__lt=expired_date)

for model_item in model_list:
    print model_item.created_date

如果您只想删除它们:

1
YourModel.objects.filter(created_date__lt=expired_date).delete()