2013-04-16 173 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