代码之家  ›  专栏  ›  技术社区  ›  Amine Messaoudi

django不筛选日期时间

  •  0
  • Amine Messaoudi  · 技术社区  · 7 年前

    我正在使用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 回复  |  直到 7 年前
        1
  •  0
  •   mentallurg    7 年前

    可能与时区有关。可能是2018-05-21 11:12:03在您所在的区域实际上是2018-05-20 01:12:03在GMT中。要检查Python如何解释您的时区,请在不使用筛选器的情况下从数据库中读取您的文章对象并写入 白天 到控制台。然后你就知道在你的过滤器里用什么了。

        2
  •  0
  •   Taohidul Islam    7 年前

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

    使用5而不是05,在python 3中,0之前的任何整数都是无效整数。

        3
  •  0
  •   Amine Messaoudi    7 年前

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

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