如何在queryset中获取当前事件?

时间:2015-11-20 07:38:24

标签: python django

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

获取包括当前正在进行的活动的最佳方法是什么?

2 个答案:

答案 0 :(得分: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,应该解决这个问题。

答案 1 :(得分:0)

尝试:

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