【问题标题】:Django: Filter objects by date rangeDjango:按日期范围过滤对象
【发布时间】:2014-09-04 17:42:20
【问题描述】:

我的对象模型是:

class Event(models.Model):
    start = models.DateTimeField()
    end = models.DateTimeField()

我需要过滤今天的所有对象。

我有一个对象,开始日期为 2014/03/01 00:00,结束日期为 2014/10/01 00:00。 在今天日期前过滤对象时,我需要有这个对象:

Event.objects.filter(start__gte=today, end__lte=today)

如何按今天日期过滤对象并获得 start > today

【问题讨论】:

    标签: python django datetime django-models models


    【解决方案1】:

    可以使用 datetime 模块的 combine 方法:

    import datetime
    today = datetime.datetime.today()
    Event.objects.filter(start__gte=datetime.datetime.combine(today, datetime.time.min),
                         end__lte=datetime.datetime.combine(today, datetime.time.max))
    

    【讨论】:

      【解决方案2】:

      datetime.date.today() 获取今天的日期并使用gtlt

      import datetime
      
      today = datetime.date.today()
      Event.objects.filter(start__lt=today, end__gt=today)
      

      这将过滤开始日期小于今天且结束日期大于今天的对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-07
        • 2020-03-09
        • 2011-06-07
        • 2015-05-12
        • 1970-01-01
        • 2020-09-08
        • 2012-02-07
        • 1970-01-01
        相关资源
        最近更新 更多