【问题标题】:How to get current events in queryset?如何获取查询集中的当前事件?
【发布时间】:2015-11-20 07:38:24
【问题描述】:
class Event(models.Model):
    name = models.CharField(max_length=255)
    start = models.DateTimeField()
    stop = models.DateTimeField()

now = timezone.now() # 08:30 am
qs = Event.objects.filter(start__gte=now) #but this exclude `event1`

事件对象:

name   start             stop
event1 20.11.2015 08:15  20.11.2015 09:30
event2 20.11.2015 09:30  20.11.2015 10:25

获取事件(包括当前正在进行的事件)的最佳方式是什么?

【问题讨论】:

标签: python django


【解决方案1】:

根据您对 Anush 的评论,您可能想尝试以下方法:

now = timezone.now().date()
qs = Event.objects.filter(
   start__year__lte=now.year,
   start__month__lte=now.month,
   start__day__lte=now.day,
)

不幸的是,当前稳定的 django 版本 (1.8) 不提供将日期时间字段截断为日期的功能,这就是您需要分别指定年、月和日的原因。

撰写本文时的最新开发版本 (1.9) 提供了 __date lookup,应该可以解决此问题。

【讨论】:

    【解决方案2】:

    尝试:

    now = timezone.now()
    qs = Event.objects.filter(start__lte=now, end__gte=now)
    

    【讨论】:

      猜你喜欢
      • 2015-11-15
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多