我想做这样的事情:
entries = Entry.objects.filter(created_at__in = current_week())
如何使其获得良好的性能。谢谢!
编辑:我仍然不知道current_week()
功能。
答案 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)
arrow
,减少处理日期时间的痛苦。