2013-04-16 49 views
2

我正在通過Django教程我的方式,我有一個模型如下。Django教程pub_date__year過濾器工作和pub_date__second過濾器不

class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 

我按照給定的說明構建了一個輪詢。

p = Poll(question="What's new?", pub_date=timezone.now()) 
p.save() 

當我做他們給的過濾器,它給了我一個有效的結果。

>>> Poll.objects.filter(pub_date__year=2013) 
[<Poll: What's new?>] 

但是,當我嘗試過濾秒(例如),它失敗。

>>> Poll.objects.filter(pub_date__second=57) 
FieldError: Join on field 'pub_date' not permitted. Did you misspell 'second' for the lookup type? 

好吧,所以也許pub_date字段莫名其妙地沒有有效的第二個。

>>> Poll.objects.get(id=1).pub_date.second 
57 

嗯。所以它有一個有效的秒,但不知怎的,我不能過濾它。如果我繼續嘗試,__day和__month可以正常工作,但__hour,__minute和__second不會。我在這裏的語法中錯過了什麼嗎?

回答

2

是如果該文件是最新的,那麼這些領域查找(第二,小時,分鐘)尚未在主枝

https://docs.djangoproject.com/en/dev/ref/models/querysets/#hour

新的Django開發版本。

您正在運行哪個版本的django? 1.5?你可以在github上查看源代碼

+1

是的,就是這樣。直接從GitHub檢出源碼(雖然它需要安裝pytz) - 我發現https://code.djangoproject.com/attachment/ticket/8424/time_filters.diff,並假設如果有人在5年前修復了它,它現在已經在提交:P謝謝! – mdierker