我有一个模型,其中包含datefield
。我正在尝试获取包含本周(从星期一开始)的模型的查询集。
所以自从姜戈datefield
包含简单的datetime.date
我假设使用的模型进行过滤.isocalendar()
。从逻辑上讲,这正是我想要的,无需在当前工作日进行额外的比较和计算。
所以我本质上想做的是力量.filter
遵循此逻辑的语句:
if model.date.isocalendar()[2] == datetime.date.today().isocalendar()[2]
...
但是如何在过滤器语句中编写它呢?.filter(model__date__isocalendar=datetime.date.today().isocalendar())
会给出错误的结果(与今天而不是本周相比相同)。
正如挖掘真实的http://docs.python.org/library/datetime.html http://docs.python.org/library/datetime.html我没有注意到任何其他工作日选项......
文档注释:
date.isocalendar() 返回一个三元组,(ISO 年份、ISO 周数、ISO
工作日)。
Update:
尽管我不喜欢使用范围的解决方案,但它是最好的选择。
然而,就我而言,我创建了一个变量来标记本周的开始,并且看起来更大或等于值,因为如果我正在寻找本周的匹配项。如果给出周数,则需要两端。
today = datetime.date.today()
monday = today - datetime.timedelta(days=today.weekday())
... \
.filter(date__gte=monday)
你将无法做到这一点。请记住,这不仅仅是 Python 支持的问题,Django 必须将过滤器传递给数据库,而数据库不支持如此复杂的日期计算。你can use __range
不过,有开始日期和结束日期。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)