我找到了鏈接:http://code.djangoproject.com/attachment/ticket/8424/time_filters.diff,並通過添加您可以在其中看到的內容更改我的django 1.2文件。
但是現在,當我試圖寫Entry.objects.filter(pub_date__hour = X) - 結果是以下錯誤:Django按小時篩選
Field has invalid lookup: hour
我應該怎麼做別的,使它工作?
(對不起,我的英語)
我找到了鏈接:http://code.djangoproject.com/attachment/ticket/8424/time_filters.diff,並通過添加您可以在其中看到的內容更改我的django 1.2文件。
但是現在,當我試圖寫Entry.objects.filter(pub_date__hour = X) - 結果是以下錯誤:Django按小時篩選
Field has invalid lookup: hour
我應該怎麼做別的,使它工作?
(對不起,我的英語)
也許你定義pub_date
爲DateField
,但它必須是一個DateTimeField
?你可以在你的模型定義代碼中包含問題嗎?
是的 - 這是DateTimeField – DJPy 2010-06-07 07:34:17
Entry.objects.filter(pub_date__hour = x)
不支持自django 1.2 - 僅年,月,日,week_day。
使用這樣的事情:
Entry.objects.filter(pub_date__regex = '08:00')
或
Entry.objects.filter(pub_date__contains = '08:00')
,這將給你所有的入口與時針對象(在所有年)。
可能更好使用原始的SQL查詢一樣的:
Whatever.objects.raw("SELECT * FROM table WHERE TIME(pub_date) LIKE '%%08:30%%' ")
的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)和其他類似查詢的小時值。
當我這樣做,並嘗試使用MyModel.objects.filter(date__hour = 8)進行過濾時,django表示它期望一個strnig或緩衝區,就好像date__hour預計爲日期時間而不是整數 – 2015-06-10 16:07:24
我不太確定這個補丁是否打算與1.2一起工作。 – 2010-06-06 16:33:10