如何在两个日期Django之间获取日期

时间:2011-10-29 18:04:24

标签: django django-views

我需要检查给定时间间隔是否存在任何对象?我怎么能这样做?如何将这个Mysql翻译成Django:

SELECT * 
FROM  `event_event` 
WHERE (startDate BETWEEN  "2010-10-1" AND  "2010-10-5")
   OR (endDate BETWEEN  "2010-10-1" AND  "2010-10-5")

我目前正在使用

Event.objects.filter(Q(startDate__range(datetime(2010,10,1),datetime(2010,10,5)))|Q(endDate__range(datetime(2010,10,1),datetime(2010,10,5))))

但是当我使用Django过滤器时,我没有得到任何对象。请告诉我我错在哪里。

2 个答案:

答案 0 :(得分:1)

print Event.objects.filter(Q(startDate__range(datetime(2010,10,1),datetime(2010,10,5)))|Q(endDate__range(datetime(2010,10,1),datetime(2010,10,5)))).query

看看它产生了什么SQL,它会帮助你发现差异。

答案 1 :(得分:0)

尝试这样做:

Event.objects.filter(Q(startDate >= datetime(2010, 10, 1), startDate <= datetime(2010, 10, 5)) | Q(endDate >= datetime(2011, 10, 1), endDate <= datetime(2010, 10, 5)))