2015-03-31 32 views
1

假設我有這種模式:比較一個月的Django模型過濾器失效

class User(models.Model): 
    id = models.AutoField(primary_key=True) 
    username = models.CharField(max_length=10) 
    last_login = models.DateTimeField(null=True) 

這是在數據庫中的記錄之一,

id=15, 
username='yhbohh' 
last_login='2015-03-31 10:57:18' 

我想獲得與去年對象的數量計數月的登錄= 3。

我在外殼試過,

User.objects.filter(last_login__year=2015).count() # return 80 
User.objects.filter(last_login__month=3).count() # return 0 
User.objects.filter(last_login__day=31).count() # return 0 

能告訴我爲什麼在過去的2個查詢返回任何記錄? 我已經從其他問題和注意搜索,比有人可能會建議使用日期範圍比較來解決這個問題。但我只想知道這個意外結果的根本原因。

非常感謝!

+0

您的_settings.py_中是否有'USE_TZ = True'? – soon 2015-03-31 04:25:54

+0

@soon,是的,我看到它在settings.py – Pang 2015-03-31 04:29:04

+1

該文檔[說](https://docs.djangoproject.com/en/1.7/ref/models/querysets/#month),所有日期時間對象都轉換爲過濾前的當前時區。這可能會導致你面臨的問題? – soon 2015-03-31 04:37:18

回答