今天在使用orm查询时间字段(datatimefield)的月份和天数时,发现怎么样都查询不到.得知问题出在datetimefiled中,datetimefiled只支持字段__year查询,而__month和__day查询的结果都为空queryset.
代码:
def post_detail(request, year, month, day, post):
post = get_object_or_404(Post, publish__year=year, publish__month=month, publish__day=day, slug=post, status='published', )
return render(request, 'blog/post/detail.html', {'post': post})
结果为:
[29/Dec/2019 20:39:41] "GET /blog/2019/12/29/test3333/ HTTP/1.1" 404 1761
那么怎样解决查询月份和天数的问题呢?有两种方法:
- 1.在orm语句中查询月份用字段__contains='月份'
year = models.Person.objects.filter(birth__contains='9')
- 2.在settings中修改配置,把USE_TZ设置为False.USE_TZ通知Django启用/支持时区支持.Django提供了基于时区的日期显示.当采用startproject管理命令创建一个新项目时,该设置项将被定义为True.所以在此修改为False.
USE_TZ = False