2012-01-06 47 views
-1

我有一個任務模型,其中每個任務都有截止日期。在django日期的基礎上過濾對象

class Tasks(models.Model): 
    assigned_to = models.ForeignKey('Users', related_name='user_assigned_to') 
    deadline = models.DateTimeField() 
    status = models.CharField(max_length=20,null=True) 

我需要過濾掉有截止日期早於今天的日期與其他filters.So我用這個查詢任務:

all_task = Tasks.objects.filter(Q(assigned_to = i),Q(deadline<datetime.datetime.today()),~Q(status="Done")) 

但是,這給我的錯誤:

NameError: name 'deadline' is not defined

如果我將查詢更改爲(只是將<符號更改爲=):

all_task = Tasks.objects.filter(Q(assigned_to = i),Q(deadline=datetime.datetime.today()),~Q(status="Done")) 

上述查詢返回對象,但爲什麼在我使用<或> with datetime的情況下它沒有返回對象?

回答

3

因爲使用<試圖將其用作名稱而不是關鍵字參數。

..., Q(deadline__lt=datetime.datetime.today()), .... 

"Field lookups"

+0

在同樣的情況下,我們會如何「小於等於」而不是「小於」? – Anshul 2012-01-06 06:05:01

+3

當一個人被給了一個鏈接,這將是一個*看起來很糟糕的* * – 2012-01-06 06:07:05

+0

問(deadline__lte = datetime.datetime.today()):)謝謝... – Anshul 2012-01-06 06:19:41

0

具有u試試這個?

all_task = Tasks.objects.filter(Q(assigned_to = i),Q(deadline__lt = datetime.datetime.today()),~Q(status="Done")) 

我希望它能工作。