Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django未筛选日期时间_Python_Django_Datetime - Fatal编程技术网

Python 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

我正在使用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)
    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.x
05
中,是无效的整数文本。这些项目是否存储在数据库中?因为构建两个
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:将你的解决方案作为你问题的答案发布,并将其标记为已接受的答案。这将帮助其他有类似问题的人。是的,如果你回答自己的问题就可以了。不要犹豫:)