我有一個模型,其中包含created_at
DateTimeField。我想過濾模型以獲取在這一天創建的所有對象,直到現在。獲取所有對象在同一天創建至今
例如:日期= 21/06/2016 現在我想在21/06創建的所有對象到現在,不論一年。
編輯: 準確地說,我有模型存儲用戶的出生日期。我想要得到所有在這一天出生的用戶。
我嘗試使用__range,__gte,__month & __day。這件事情沒有奏效。
我有一個模型,其中包含created_at
DateTimeField。我想過濾模型以獲取在這一天創建的所有對象,直到現在。獲取所有對象在同一天創建至今
例如:日期= 21/06/2016 現在我想在21/06創建的所有對象到現在,不論一年。
編輯: 準確地說,我有模型存儲用戶的出生日期。我想要得到所有在這一天出生的用戶。
我嘗試使用__range,__gte,__month & __day。這件事情沒有奏效。
感謝您的意見和解答。我已經使用this答案來解決問題。我已經從代碼中刪除了timedelta(days)
。
從我可以從你的問題明白了,你想獲得的所有對象具有相同的日期爲今天,不論一年。
我會用這樣的東西。看看這是否有幫助。
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?
過濾所述查詢集之外的一個例子。 獲取ü希望的日期,並刪除不想要的結果
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
]
不知道如果我理解正確的問題,但試試這個:
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)
)
@ShangWang我試着用範圍,gte,__month&__day。這件事情不起作用 –
那麼你爲什麼不在你的問題中指定它們?你應該總是告訴人們你曾經嘗試過什麼,以及哪些行不通。如果你只是把問題放在那裏,它給人的印象是你試圖讓人們爲你寫代碼。此外,你的問題越具體,人們就越有可能幫助你。 http://stackoverflow.com/help/how-to-ask –
@Sunil,你是什麼意思,他們不工作?他們會拋出錯誤嗎?或者返回一個空列表(在這種情況下,您是否檢查對象是否具有與條件匹配的created_at值)?還是會返回部分結果?你可以發佈你的代碼,以便我們可以看到發生了什麼? –