2009-06-11 15 views
19

djangoで1か月以内の日付のオブジェクトをすべて取得する方法はありますか?以下のような1ヶ月未満のすべてのアイテムを取得する

何か:

items = Item.objects.filter(less than a month old).order_by(...) 
+0

「すべてのオブジェクト」とはどういう意味ですか?あなたは特定のタイプのすべてのオブジェクトを意味しますか? –

+0

ええ、 "Item"タイプのすべてのオブジェクト –

答えて

32

"月" のあなたの定義は何ですか? 30日? 31日?それを過ぎると、これはそれを行う必要があります。

from datetime import datetime, timedelta 
last_month = datetime.today() - timedelta(days=30) 
items = Item.objects.filter(my_date__gte=last_month).order_by(...) 

gteフィールドのルックアップのadvantangeをとります。

+1

datetime.today()が3月1日の場合は失敗します。先月は1月ではなく2月でした。 正確である必要がない場合、これは正常に機能します(30日前=先月)が、先月に何が起こったのかを実際に知る必要がある場合は、Python (私の知る限り)。 –

+1

** python-dateutil **にはrelatiedelta *があり、正確な過去1ヶ月を与えることができます。 – Neutralizer

+0

[ここ](https://stackoverflow.com/a/9725093/209050)は、 'datetime'だけを使って先月を取得する方法の1つです。 – mgalgs

4
items = Item.objects.filter(created_date__gte=aMonthAgo) 

ここで、aMonthAgoはdatetimeとtimedeltaで計算されます。

関連する問題