2009-12-31 16 views
21

वह दिन है जो उपयोगकर्ता उपयोगकर्ता इनपुट से दिन (0 इनपुट से दिन) से अधिक परिणाम प्राप्त करने के लिए इनपुट करेगा, उदाहरण के लिए यदि उपयोगकर्ता 32 दिन 30 दिनों से अधिक के परिणाम प्राप्त करेंगे।django दिन से अधिक पुराना फ़िल्टर?

A quick try-out: 

class Entry(models.Model): 
    entered = models.DateTimeField() 

>>> from datetime import datetime 
>>> Entry(entered = datetime.now()).save() 
>>> Entry.objects.filter(entered__lte = datetime.now()) 
[<Entry: Entry object>] 
>>> Entry.objects.filter(entered__gte = datetime.now()) 
[] 
>>> Entry.objects.filter(entered__gte = datetime.now(), entered__lte=datetime(2009,11,1,0,0)) 
[<Entry: Entry object>] 

मेरे समस्या और इनपुट क्षेत्र

for day_filter in xrange(1,int(last_contact_filled)+1): 
       qdict['last_contact__day']=day_filter 

Django में यह करने के लिए सबसे अच्छा तरीका क्या है से मेरी कोशिश कर

xxxx__day__lte. 

last_contact_filled इनपुट? मेरे मामले में दिन (ओं) द्वारा फ़िल्टर के लिए?

उत्तर

53

कुछ इस तरह आप के लिए काम करेंगे:

from datetime import datetime, timedelta 
how_many_days = 30 
MyObject.objects.filter(entered__gte=datetime.now()-timedelta(days=how_many_days)) 
+0

हाँ यह काम करता है ... धन्यवाद ... :) – kn3l

+3

देशी समय त्रुटि को रोकें (रनटाइम चेतावनी: डेटटाइमफ़िल्ल्ड xxx.created_at को एक बेवकूफ डेटाटाइम प्राप्त हुआ (2016-05-01 11: 31: 59.768065) ​​जबकि समय क्षेत्र समर्थन सक्रिय है) आपको अब djangos टाइमज़ोन आयात करना चाहिए: django.utils.timezone से आयात करें अब आयात करें – gustavgans

3

फ़िल्टर में datetime पर timedelta(-30) जोड़ें।

+0

साथ Django timezone.now() का उपयोग समझ में न कर सकते हैं whant तुम मुझे जोड़ने के लिए जहां जोड़ना चाहते हैं? उदाहरण के लिए – kn3l

+0

'डेटाटाइम .now() + timedelta (-30)'। –

4

हम timedelta

from datetime import timedelta 
from django.utils import timezone 
time_threshold = timezone.now() - timedelta(days=7) 
Entry.objects.filter(entered__gte=time_threshold) 
संबंधित मुद्दे