2009-09-16 136 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