2015-01-09 2 views
0

У меня есть DateTimeField в модели обслуживания, определяемой как это:Истечение логики с DateTimeField в Django

pub_date = models.DateTimeField(default=timezone.now,blank=True) 

Я хочу, чтобы создать некоторую логику истечения в моем коде, так что услуги, которые старше, чем за 2 месяца истекают. На мой взгляд, будут отображаться только те службы, которые не истекли.

Например, я хочу сделать это в целях:

views.py

class display_services: 
    services = Service.objects.all() 
    valid_services = [] 
    for service in service 
     **If Service is Not Expired*** 
       valid_services.append(service) 
    endfor 
... 

ответ

1

Вы можете просто фильтровать по pub_date

from datetime import datetime, timedelta 

class DisplayServices(ListView): 
    queryset = Service.objects.filter(pub_date__gte=datetime.now()-timedelta(days=60)) 

    ... 
+0

Это упростило бы многое. Если вы не возражаете, я спрашиваю, что такое _gte? –

+2

Он соответствует, когда значение предыдущего столбца больше или равно тому, что передается. Также есть gt, lt, lte и т. Д. Если один из этих ответов поможет вам, отметьте этот вопрос, как было указано. – dylrei

0

Я думаю, что это то, что вы хотите:

import datetime as dt 
two_months_ago = dt.date.today() + dt.timedelta(days=-60) 
valid_services = Service.objects.filter(pub_date__gte=two_months_ago) 
Смежные вопросы