我有一个包含created_at
DateTimeField的模型。我想过滤模型,以便在今天,一个月到现在创建所有对象。
例如:日期= 2016年6月21日 现在我想要在21/06年创建所有对象,直到现在,无论年份如何。
编辑: 确切地说,我有存储用户出生日期的模型。我希望得到所有在这一天出生的用户。
我尝试使用__range,__ gte,__ month& __天。这件事没有用。
答案 0 :(得分:1)
感谢您的意见和解答。我使用this答案来解决问题。我已从代码中删除了timedelta(days)
。
答案 1 :(得分:0)
在查询集外部进行过滤的示例。 获取您想要的日期并删除不需要的结果
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
]
答案 2 :(得分: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)
)
答案 3 :(得分:-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?