django没有过滤日期时间

时间:2018-06-03 14:02:50

标签: 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)
    date=models.DateTimeField(auto_now_add=True)
    content = models.TextField(null=False, blank=False)
    resume=models.CharField(null=False,blank=False,max_length=400)

现在我有两篇文章,其中包含以下日期(日期时间

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)

我得到一个空的查询集

3 个答案:

答案 0 :(得分:0)

它可能与时区有关。可能是2018-05-21 11:12:03你所在的区域实际上是格林尼治标准时间2018-05-20 01:12:03。要检查Python如何解释您的时区,请在没有过滤器的情况下从数据库中读取文章对象,并将写入控制台。然后,您将知道在过滤器中使用的内容。

答案 1 :(得分:0)

articles=Article.objects.filter(date__day=21,date__month=5,date__year=2018)

使用5代替05,在Python 3中,0之前的任何整数都是无效的整数。

答案 2 :(得分:0)

我已经使用包含过滤器解决了这个问题。

articles=Article.objects.filter(date__contains=datetime.date(2018,5,21))