我有一个模型,其中包含created_at
DateTimeField。我想过滤模型以获取在这一天创建的所有对象,直到现在。获取所有对象在同一天创建至今
例如:日期= 21/06/2016 现在我想在21/06创建的所有对象到现在,不论一年。
编辑: 准确地说,我有模型存储用户的出生日期。我想要得到所有在这一天出生的用户。
我尝试使用__range,__gte,__month & __day。这件事情没有奏效。
我有一个模型,其中包含created_at
DateTimeField。我想过滤模型以获取在这一天创建的所有对象,直到现在。获取所有对象在同一天创建至今
例如:日期= 21/06/2016 现在我想在21/06创建的所有对象到现在,不论一年。
编辑: 准确地说,我有模型存储用户的出生日期。我想要得到所有在这一天出生的用户。
我尝试使用__range,__gte,__month & __day。这件事情没有奏效。
感谢您的意见和解答。我已经使用this答案来解决问题。我已经从代码中删除了timedelta(days)
。
从我可以从你的问题明白了,你想获得的所有对象具有相同的日期为今天,不论一年。
我会用这样的东西。看看这是否有帮助。
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?
过滤所述查询集之外的一个例子。 获取ü希望的日期,并删除不想要的结果
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
]
不知道如果我理解正确的问题,但试试这个:
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)
)
@ShangWang我试着用范围,gte,__month&__day。这件事情不起作用 –
那么你为什么不在你的问题中指定它们?你应该总是告诉人们你曾经尝试过什么,以及哪些行不通。如果你只是把问题放在那里,它给人的印象是你试图让人们为你写代码。此外,你的问题越具体,人们就越有可能帮助你。 http://stackoverflow.com/help/how-to-ask –
@Sunil,你是什么意思,他们不工作?他们会抛出错误吗?或者返回一个空列表(在这种情况下,您是否检查对象是否具有与条件匹配的created_at值)?还是会返回部分结果?你可以发布你的代码,以便我们可以看到发生了什么? –