Django / Python - 检查当前周的日期

时间:2012-02-06 11:04:18

标签: python django datetime django-queryset

我想做这样的事情:

entries = Entry.objects.filter(created_at__in = current_week())

如何使其获得良好的性能。谢谢!

编辑:我仍然不知道current_week()功能。

3 个答案:

答案 0 :(得分:25)

使用__range。您需要先实际计算一周的开始和结束时间:

import datetime
date = datetime.date.today()
start_week = date - datetime.timedelta(date.weekday())
end_week = start_week + datetime.timedelta(7)
entries = Entry.objects.filter(created_at__range=[start_week, end_week])

答案 1 :(得分:3)

从django 1.11开始,你可以这样做:

Entry.objects.filter(created_at__week=current_week)

根据ISO-8601,它将为您提供从星期一到星期日的一周。

查询当前周:

from datetime import date
current_week = date.today().isocalendar()[1] 

isocalendar()将返回一个包含3个项目的元组:( ISO年份,ISO周编号,ISO工作日)。

答案 2 :(得分:1)

是的,这个问题发生在2年前。今天有了更多经验,我建议使用arrow,减少处理日期时间的痛苦。

结帐:https://github.com/crsmithdev/arrow