Django/Python - 检查日期是否在本周内

18 投票
3 回答
14371 浏览
提问于 2025-04-17 12:25

我想做一些像这样的事情:

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

怎么才能让它运行得更快呢?谢谢!

补充:我还是不知道怎么写 current_week() 这个函数。

3 个回答

2

没错,这个问题是两年前的事了。现在有了更多的经验,我建议使用 arrow 来处理日期和时间,这样会轻松很多。

可以看看这个链接: https://github.com/crsmithdev/arrow

11

Django 1.11开始,你可以使用week这个字段查找

Entry.objects.filter(created_at__week=current_week)

这个功能会根据ISO-8601标准,给你从星期一到星期天的这一周。

如果你想查询当前这一周,可以使用:

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

isocalendar()这个函数会返回一个包含三个部分的元组:(ISO年, ISO周数, ISO星期几)。

40

使用 __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])

撰写回答