我尝试为我的渲染创建一个范围,但当我使用now()
或date.today()
按日期过滤时,我只有空查询。为什么日期范围返回空查询?
models.py:
class Episode(models.Model):
date = models.DateTimeField(null=True, default=now)
我导入好的库的过程:
from django.utils.timezone import now, timedelta
我认为这是个好办法:
page = 0
n = now()
Episode.objects.filter(date__range=[n-timedelta(days=(5*page)), n-timedelta(days=(5*(page+1)))])
<QuerySet []>
但它没有工作... 有关信息:数据库有键入的情节和值datetime.datetime:
for e in Episode.objects.filter():
print(e.date)
2017-02-22 19:12:31.351811+00:00
2017-02-22 19:12:31.418354+00:00
2017-02-22 19:12:31.468889+00:00
2017-02-22 19:12:31.524925+00:00
2017-02-22 19:12:31.599978+00:00
2017-02-22 19:12:31.680029+00:00
2017-02-22 19:12:31.744071+00:00
2017-02-22 19:12:31.803611+00:00
2017-02-22 19:12:31.872156+00:00
2017-02-22 22:24:56.733546+00:00
2017-02-23 19:16:00.600644+00:00
当我在范围照片直接使用字符串时,它的工作...
Episode.objects.filter(date__range=['2017-02-22 19:12:31.351811+00:00','2017-02-22 19:12:31.744071+00:00'])
<QuerySet [<Episode: Episode object>, <Episode: Episode object>, <Episode: Episode object>, <Episode: Episode object>, <Episode: Episode object>, <Episode: Episode object>, <Episode: Episode object>]>
我尝试过前初始化变量...
n = now()
page = 0
startDate = n-timedelta(days=5*page)
endDate = n-timedelta(days=5*(page+1))
Episode.objects.filter(date__range=[startDate, endDate])
<QuerySet []>
你有一个IDEAR为什么我可以使用now
或datetime
进行过滤,并且它可以与字符串一起使用?
编辑:查询
print(Episode.objects.filter(date__range=[startDate, endDate]).query)
SELECT "table_episode"."id", "table_episode"."card_id", "table_episode"."date", "table_episode"."number", "table_episode"."title", "table_episode"."type_episode", "table_episode"."tag", "table_episode"."url_access" FROM "table_episode" WHERE "table_episode"."date" BETWEEN 2017-02-23 22:46:06.391779 AND 2017-02-18 22:46:06.391779
<QuerySet []>
你可以打印查询集查询,并检查提示生成的SQL: '打印Episode.objects.filter(date__range = [N-timedelta(天数=(5 *页)),正timedelta (days =(5 *(page + 1)))]])。query' – alfredo138923
感谢您的回复,我不认为这样做,我将它添加到主帖子中。 – Buky
'endDate = n-timedelta(days = 5 *(page + 1))'endDate总是小于startDate。检查条件。希望它有帮助 – alfredo138923