2016-06-21 55 views
0

我有一个模型,其中包含created_at DateTimeField。我想过滤模型以获取在这一天创建的所有对象,直到现在。获取所有对象在同一天创建至今

例如:日期= 21/06/2016 现在我想在21/06创建的所有对象到现在,不论一年。

编辑: 准确地说,我有模型存储用户的出生日期。我想要得到所有在这一天出生的用户。

我尝试使用__range,__gte,__month & __day。这件事情没有奏效。

+0

@ShangWang我试着用范围,gte,__month&__day。这件事情不起作用 –

+1

那么你为什么不在你的问题中指定它们?你应该总是告诉人们你曾经尝试过什么,以及哪些行不通。如果你只是把问题放在那里,它给人的印象是你试图让人们为你写代码。此外,你的问题越具体,人们就越有可能帮助你。 http://stackoverflow.com/help/how-to-ask –

+0

@Sunil,你是什么意思,他们不工作?他们会抛出错误吗?或者返回一个空列表(在这种情况下,您是否检查对象是否具有与条件匹配的created_at值)?还是会返回部分结果?你可以发布你的代码,以便我们可以看到发生了什么? –

回答

1

感谢您的意见和解答。我已经使用this答案来解决问题。我已经从代码中删除了timedelta(days)

-1

从我可以从你的问题明白了,你想获得的所有对象具有相同的日期为今天,不论一年。

我会用这样的东西。看看这是否有帮助。

from datetime import datetime 
today = datetime.now() 

OneModel.objects.filter(created_at__day = today.day.__str__(), 
    created_at__month = today.month.__str__()) 

有关详细看到此链接:How can I filter a date of a DateTimeField in Django?

0

过滤所述查询集之外的一个例子。 获取ü希望的日期,并删除不想要的结果

from datetime import datetime, timedelta 

twodaysago = str(datetime.strptime(str(datetime.now().date()-timedelta(days=2)), '%Y-%m-%d')).split()[0] 

现在做你的查询和过滤它这样,你也可以做到这一点在查询过滤器,但如果u需要一些额外的操作做在你的代码

date_filtered = [x for x in query\ 
       if datetime.strptime(
        x.get('created_at ', ''), 
        '%Y-%m-%d') > twodaysago 
       ] 
0

不知道如果我理解正确的问题,但试试这个:

before = datetime.date(2016, 06, 21) 
today = datetime.date.today() 

MyModel.objects.filter(
    created_at__month__range=(before.month, today.month), 
    created_at__day__range=(before.day, today.day) 
)