我找到了链接:http://code.djangoproject.com/attachment/ticket/8424/time_filters.diff并通过添加你可以在那里看到的内容来更改我的django 1.2文件。
但现在,当我正在尝试编写Entry.objects.filter(pub_date__hour = x)时 - 结果出现以下错误:
字段查找无效:小时
我应该怎么做才能让它发挥作用?
(对不起我的英文)
答案 0 :(得分:4)
Entry.objects.filter(pub_date__hour = x)
django 1.2不支持- 仅限年,月,日,周日。
使用类似的东西:
Entry.objects.filter(pub_date__regex = '08:00')
或
Entry.objects.filter(pub_date__contains = '08:00')
将为您提供所有带有小时(全年)的Entry对象。
答案 1 :(得分:2)
Django 1.7增加了对自定义查找和转换的支持。在PostgreSQL上实现了一个小时转换:
class HourExtract(models.Transform):
lookup_name = 'hour'
output_type = models.IntegerField()
def as_sql(self, compiler, connection):
lhs_sql, lhs_params = compiler.compile(self.lhs)
return "EXTRACT(hour FROM %s)" % lhs_sql, lhs_params
models.DateTimeField.register_lookup(HourExtract)
现在你可以对小时值进行.filter(pub_date__hour__lte = x)和其他类似的查询。
答案 2 :(得分:1)
可能更好地使用原始SQL查询,如:
Whatever.objects.raw("SELECT * FROM table WHERE TIME(pub_date) LIKE '%%08:30%%' ")
答案 3 :(得分:0)
也许您将pub_date
定义为DateField
,但它必须是DateTimeField
?你能在问题中包含你的模型定义代码吗?