2009-06-11 6 views
19

क्या सभी वस्तुओं को एक महीने पहले डीजेंगो से कम समय के साथ प्राप्त करने का कोई तरीका है।सभी वस्तुओं को एक महीने से कम पुराना

कुछ की तरह:

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

आपका मतलब क्या है "सभी ऑब्जेक्ट्स"? क्या आपका मतलब किसी विशेष प्रकार की सभी वस्तुएं हैं? –

+0

हाँ, सभी प्रकार की वस्तुओं "आइटम" –

उत्तर

32

एक "महीने" की अपनी परिभाषा क्या है? तीस दिन? 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() 1 मार्च है - पिछले महीने फरवरी था, जनवरी नहीं। यदि आपको इसकी आवश्यकता नहीं है, तो यह ठीक काम करेगा (30 दिन पहले = पिछले महीने) लेकिन अगर आपको वास्तव में पता होना चाहिए कि पिछले महीने क्या हुआ, तो इसके बारे में पाइथन में जाने का कोई आसान तरीका नहीं है (AFAIK)। –

+1

** * python-dateutil ** में * relatiedelta * है जो आपको पिछले महीने सटीक दे सकता है। – Neutralizer

+0

[यहां] (https://stackoverflow.com/a/9725093/209050) पिछले महीने प्राप्त करने का एक तरीका है लेकिन 'डेटाटाइम' के अलावा कुछ भी नहीं। – mgalgs

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

जहां मॉन्थगो की गणना डेटाटाइम और टाइमडेल्टा द्वारा की जाएगी।

संबंधित मुद्दे