【问题标题】:Expiration logic with DateTimeField in DjangoDjango中带有DateTimeField的过期逻辑
【发布时间】:2015-01-09 20:49:04
【问题描述】:

我在服务模型中有一个 DateTimeField,定义如下:

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
...

【问题讨论】:

    标签: python django


    【解决方案1】:

    你可以只过滤pub_date

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

    【讨论】:

    • 这会简化很多事情。如果你不介意我问,_gte 是什么?
    • 当前一列的值大于等于传入的值时匹配。还有gt、lt、lte等。如果这些答案之一对你有帮助,请标记这个已回答的问题。
    【解决方案2】:

    我想这就是你想要的:

    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)
    

    【讨论】:

      猜你喜欢
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 2020-09-08
      • 2014-12-31
      • 2012-12-14
      • 2017-08-30
      • 2016-09-18
      相关资源
      最近更新 更多