Python django未筛选日期时间
我正在使用django开发一个新闻网站,我希望允许用户按日期搜索文章 这是文章模型Python django未筛选日期时间,python,django,datetime,Python,Django,Datetime,我正在使用django开发一个新闻网站,我希望允许用户按日期搜索文章 这是文章模型 class Article(models.Model): id=models.AutoField(primary_key=True) title=models.CharField(max_length=100,null=False,blank=False) category=models.ForeignKey(Category,null=False,blank=False) dat
class Article(models.Model):
id=models.AutoField(primary_key=True)
title=models.CharField(max_length=100,null=False,blank=False)
category=models.ForeignKey(Category,null=False,blank=False)
date=models.DateTimeField(auto_now_add=True)
content = models.TextField(null=False, blank=False)
resume=models.CharField(null=False,blank=False,max_length=400)
现在我有两篇文章的日期如下(datetime)
2018-05-21 11:12:03.868542
2018-05-22 19:02:12.885298
当我在django shell上运行这个时
articles=Article.objects.filter(date__day=21,date__month=05,date__year=2018)
我得到一个空查询集,它可能与时区有关。您所在的时区可能是2018-05-21 11:12:03,实际上是格林威治标准时间2018-05-20 01:12:03。要检查Python如何解释您的时区,请从数据库中读取您的文章对象(不带过滤器),然后将日和月写入控制台。然后您将知道在过滤器中使用什么。
articles=Article.objects.filter(date__day=21,date__month=5,date__year=2018)
使用5而不是05,在Python 3中,0之前的任何整数都是无效整数。我使用contains过滤器解决了这个问题
articles=Article.objects.filter(date__contains=datetime.date(2018,5,21))
为什么不直接使用
Article.objects.filter(date\uu date=date(2018,05,21))
?您使用的是Python-3.x吗?在Python-3.x05
中,是无效的整数文本。这些项目是否存储在数据库中?因为构建两个Article
实例是不够的。我写的日期取自数据库,这是我在django shell中打印第一篇文章的日期时得到的:datetime.datetime(2018,5,21,11,12,3868542,tzinfo=(UTC))如果我只使用年份进行过滤,它是有效的,但是如果我尝试包含日期和月份,它就不起作用了work@AmineMessaoudi:输出看起来不错。无论如何,请检查以下内容。如果按年份和月份过滤而不带日期,会发生什么情况?如果有效的话,试着加上第20天,然后是第22天。有一天会找到它吗?如果是,这意味着在日期转换和时区方面存在一些问题。谢谢,但我已经解决了这个问题。我使用了它,它起了作用:articles=Article.objects.filter(date\uu contains=datetime.date(2018,5,21))@AmineMessaoudi:将你的解决方案作为你问题的答案发布,并将其标记为已接受的答案。这将帮助其他有类似问题的人。是的,如果你回答自己的问题就可以了。不要犹豫:)