2012-01-06 50 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")) 

我希望它能工作。