2011-05-18 157 views
1

嗨我有一個用戶輸入表格,其格式爲2011-05-12格式。我想用Q查詢結果。但我的數據庫字段是日期時間格式,如2011-05-18 08:36:34。我給這樣的在Django查詢集中的日期時間和日期比較

k = Posts.objects.filter(Q(review_email__contains = user), review_time = datetime(date))其中user是一些用戶名和date的查詢語句的形式inputValue將

如果我執行我得到如下的錯誤上面的查詢

Traceback (most recent call last): 
File "<console>", line 1, in <module> 
TypeError: 'module' object is not callable 

有人能幫助我在解決這個問題。在此先感謝

回答

6

錯誤來自沒有做datetime.datetime,但只要你f ix,你會在查詢中遇到不正確的結果。當您將datetime.date強制爲datetime.datetime對象時,它將在午夜。因此,只有在當天午夜創建的Posts纔會匹配。

你應該這樣做,而不是:

Post.objects.filter(
    review_email__contains = user, 
    review_time__year=date.year, 
    review_time__day=date.day, 
    review_time__month=date.month, 
) 

更多信息,請參見queryset reference

在旁註中,您並不需要在此使用Q對象。

+0

謝謝,我得到了這個。我爲我的目的使用Q對象(用於我的搜索條件) – vkrams 2011-05-18 07:08:05

0

因爲,錯誤說,'module'對象不可召回datetime是一個模塊。你想要的是datetime.datetime

用途:

k = Posts.objects.filter(Q(review_email__contains = user), review_time = datetime.datetime(date)) 
0

如果你只是想比較的日期,你可以試試這個

K = Posts.objects.filter(Q(review_email__contains =用戶),review_time__date = datetime(date).date())