获取同一天创建的所有对象
Get all objects created on same day till now
我有一个包含 created_at
DateTimeField 的模型。我想过滤模型以获取在这一天、一个月到现在创建的所有对象。
例如:日期 = 21/06/2016
现在我想获取 21/06 到现在为止创建的所有对象,而不考虑年份。
编辑:
准确地说,我有存储用户出生日期的模型。我想获取所有在这一天出生的用户。
我尝试使用 __range、__gte、__month 和 __day。这东西没用。
根据我从你的问题中了解到的情况,你想要获取与今天日期相同的所有对象,而不考虑年份。
我会用这样的东西。看看这是否有帮助。
from datetime import datetime
today = datetime.now()
OneModel.objects.filter(created_at__day = today.day.__str__(),
created_at__month = today.month.__str__())
有关更多信息,请参阅此 link: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]
现在像这样进行查询和过滤,您也可以在查询过滤器中进行,但如果您需要一些额外的操作,请在代码中进行
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)
)
感谢您的评论和回答。我已经使用 this 答案来解决问题。我已经从代码中删除了 timedelta(days)
。
我有一个包含 created_at
DateTimeField 的模型。我想过滤模型以获取在这一天、一个月到现在创建的所有对象。
例如:日期 = 21/06/2016 现在我想获取 21/06 到现在为止创建的所有对象,而不考虑年份。
编辑: 准确地说,我有存储用户出生日期的模型。我想获取所有在这一天出生的用户。
我尝试使用 __range、__gte、__month 和 __day。这东西没用。
根据我从你的问题中了解到的情况,你想要获取与今天日期相同的所有对象,而不考虑年份。
我会用这样的东西。看看这是否有帮助。
from datetime import datetime
today = datetime.now()
OneModel.objects.filter(created_at__day = today.day.__str__(),
created_at__month = today.month.__str__())
有关更多信息,请参阅此 link: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]
现在像这样进行查询和过滤,您也可以在查询过滤器中进行,但如果您需要一些额外的操作,请在代码中进行
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)
)
感谢您的评论和回答。我已经使用 this 答案来解决问题。我已经从代码中删除了 timedelta(days)
。