2017-04-20 17 views
0

假設我有一個數組中的日期列表,我只想保留那些已過期的日期以便稍後清除它們。但我試圖在數組中的每個日期傳遞一個IF條件並僅打印已過期的條件。問題是我不明白我如何用Python做到這一點。在Django中比較offset-naive和-aware日期時間

這是我想這樣做:

# 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

Python並不陣列。你在那裏看起來像一個Django QuerySet。你應該用適當的'.filter()'調用過濾它。 –

+0

@KlausD。如何根據過期時間過濾Django查詢集? – Lindow

+1

https://docs.djangoproject.com/en/1.11/topics/db/queries/#field-lookups –

回答

1
from django.utils.timezone import now, timedelta 

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

如果你想看到他們:

model_list = YourModel.objects.filter(created_date__lt=expired_date) 

for model_item in model_list: 
    print model_item.created_date 

如果你只是想將其刪除:

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