2014-03-02 25 views
2

我試圖使用Django 1.6篩選Performancestart_time小時。在控制檯中我看到:如何在Django中按小時篩選1.6+

>>> Performance.objects.first().start_time 
datetime.datetime(2014, 4, 6, 11, 0, tzinfo=<UTC>) 
>>> Performance.objects.first().start_time.hour 
11 

但隨後,從該文檔在https://docs.djangoproject.com/en/1.6/ref/models/querysets/#hour

>>> Performance.objects.filter(start_time__hour=11) 
[] 

我怎樣才能通過過濾小時?非常類似於(目前尚未回答)的問題:Django ORM: filter by hour range

models.py

class Performance(models.Model): 
    start_time = models.DateTimeField(db_index=True) 
    end_time = models.DateTimeField(default=None, blank=True, null=True) 
... 
+2

「當USE_TZ是真下,在過濾之前將值轉換爲當前時區。「這可能是原因? – almalki

+0

不幸的是不是@almalki,我在0-23小時內得到了相同的結果。 – thebenedict

+1

FWIW,我剛剛在我自己的項目中測試過,它工作正常。它看起來像你一切正常。正如@almalki指出的那樣,訪問屬性將給出存儲的UTC時間,而查詢將使用本地時間,所以如果您使用「USE_TZ」並且未在本地UTC運行,上述結果是正常的。但是如果你每小時嘗試一次而沒有得到任何結果,那麼有些東西是關閉的...... –

回答