我試圖使用Django 1.6篩選Performance
start_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)
...
「當USE_TZ是真下,在過濾之前將值轉換爲當前時區。「這可能是原因? – almalki
不幸的是不是@almalki,我在0-23小時內得到了相同的結果。 – thebenedict
FWIW,我剛剛在我自己的項目中測試過,它工作正常。它看起來像你一切正常。正如@almalki指出的那樣,訪問屬性將給出存儲的UTC時間,而查詢將使用本地時間,所以如果您使用「USE_TZ」並且未在本地UTC運行,上述結果是正常的。但是如果你每小時嘗試一次而沒有得到任何結果,那麼有些東西是關閉的...... –