2009-09-07 76 views
2
#model 
class Promotion(models.Model): 
    name = models.CharField(max_length=200) 
    start_date = models.DateTimeField() 
    end_date = models.DateTimeField() 


#view 
def promo_search(request): 
    ... 
    results = Promotion.objects.filter(start_date__gte=start_date).filter(end_date__lte=end_date) 
    ... 

(上面顯然不會,我只是用它來工作,以幫助 的代碼說明我的問題。)日期範圍頭痛

我要顯示的開始日期之間的所有活動促銷結束日期爲 。

因此,如果從01/12/09到01/02/09的搜索從01/01/09開始並於2009年1月30日結束, 搜索仍會返回結果。如果他們從日期範圍內搜索,例如 02/01/09 - 03/01/09 他們會得到相同的結果。

是否有一些神奇的Django的方式實現這一點,而不是每天循環 ?

回答

1

您有四個日期需要考慮:start_search,end_search,start_promoend_promo。您正在尋找促銷活動的地方start_promo <= end_searchend_promo >= start_search

results = Promotion.objects.\ 
      filter(start_date__lte=end_date).\ 
      filter(end_date__gte=start_date) 
+0

謝謝,現在工作:) – 2009-09-07 14:36:29