2009-09-16 103 views
1

SQL的之间比方说,我有如下表:Django的查询集等效

员工

name  start_date  end_date 
John  2009-10-10  2009-12-31 
Joe  2009-12-01  2010-05-10 

我也有一个curr_date = '2009-11-01'。如果我想获得的所有员工,其中curr_date应该是员工的start_dateend_date包容性,相应的SQL之间:

SELECT * 
FROM employee 
WHERE curr_date between start_date and end_date 

相应的Django的查询集,我想出了是:

Employee.objects.filter(start_date__lte=curr_date, end_date__gte=curr_date) 

有使用Django的QuerySet完成上述操作的替代方法,__range方法对于上述情况并不适用。

回答

1

你说得对,__range方法不起作用,所以不行,没有办法使用Django ORM来创建你之后的SQL。

使用您提出的.filter方法有问题吗?

+0

这个过滤器没什么问题,我只是想知道DRYer执行这个查询的方法,我想你不能真的干任何事情。 – 2009-09-17 05:25:40