2016-06-21 31 views
0

我有一個模型,其中包含created_at DateTimeField。我想過濾模型以獲取在這一天創建的所有對象,直到現在。獲取所有對象在同一天創建至今

例如:日期= 21/06/2016 現在我想在21/06創建的所有對象到現在,不論一年。

編輯: 準確地說,我有模型存儲用戶的出生日期。我想要得到所有在這一天出生的用戶。

我嘗試使用__range,__gte,__month & __day。這件事情沒有奏效。

+0

@ShangWang我試着用範圍,gte,__month&__day。這件事情不起作用 –

+1

那麼你爲什麼不在你的問題中指定它們?你應該總是告訴人們你曾經嘗試過什麼,以及哪些行不通。如果你只是把問題放在那裏,它給人的印象是你試圖讓人們爲你寫代碼。此外,你的問題越具體,人們就越有可能幫助你。 http://stackoverflow.com/help/how-to-ask –

+0

@Sunil,你是什麼意思,他們不工作?他們會拋出錯誤嗎?或者返回一個空列表(在這種情況下,您是否檢查對象是否具有與條件匹配的created_at值)?還是會返回部分結果?你可以發佈你的代碼,以便我們可以看到發生了什麼? –

回答

1

感謝您的意見和解答。我已經使用this答案來解決問題。我已經從代碼中刪除了timedelta(days)

-1

從我可以從你的問題明白了,你想獲得的所有對象具有相同的日期爲今天,不論一年。

我會用這樣的東西。看看這是否有幫助。

from datetime import datetime 
today = datetime.now() 

OneModel.objects.filter(created_at__day = today.day.__str__(), 
    created_at__month = today.month.__str__()) 

有關詳細看到此鏈接:How can I filter a date of a DateTimeField in Django?

0

過濾所述查詢集之外的一個例子。 獲取ü希望的日期,並刪除不想要的結果

from datetime import datetime, timedelta 

twodaysago = str(datetime.strptime(str(datetime.now().date()-timedelta(days=2)), '%Y-%m-%d')).split()[0] 

現在做你的查詢和過濾它這樣,你也可以做到這一點在查詢過濾器,但如果u需要一些額外的操作做在你的代碼

date_filtered = [x for x in query\ 
       if datetime.strptime(
        x.get('created_at ', ''), 
        '%Y-%m-%d') > twodaysago 
       ] 
0

不知道如果我理解正確的問題,但試試這個:

before = datetime.date(2016, 06, 21) 
today = datetime.date.today() 

MyModel.objects.filter(
    created_at__month__range=(before.month, today.month), 
    created_at__day__range=(before.day, today.day) 
)