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

anh*_*ran 10 python django datetime django-queryset

我想做这样的事情:

entries = Entry.objects.filter(created_at__in = current_week())
Run Code Online (Sandbox Code Playgroud)

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

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

Dan*_*man 27

使用__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])
Run Code Online (Sandbox Code Playgroud)

  • 你不会用 6 而不是 7 来表示 timedelta 吗?星期一 = 0 和星期日 = 6 (2认同)

Har*_*per 8

Django 1.11 开始,我们可以使用Field lookupweek

Entry.objects.filter(created_at__week=current_week)
Run Code Online (Sandbox Code Playgroud)

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

查询当前周:

from datetime import date
current_week = date.today().isocalendar()[1] 
Run Code Online (Sandbox Code Playgroud)

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