如何在Python(Django)中根据日期时间范围过滤对象

1 投票
2 回答
7094 浏览
提问于 2025-04-17 19:32

我正在尝试创建一个页面,显示所有最新的帖子。

class Post(models.Model):
     title = models.CharField(max_length=40)
     postTime = models.DateTimeField(auto_now_add=True)

我找到了这个例子:

 start_date = datetime.date(2005, 1, 1)
 end_date = datetime.date(2005, 3, 31)
 Post.objects.filter(postTime__range=(start_date, end_date))

我知道我应该使用 __range 函数。但是我该怎么做才能获取从今天到两周前的所有帖子呢?

像这样:

start_date = datetime.date(date from two weeks ago)
end_date = datetime.date(currentdate)
Post.objects.filter(postTime__range(start_date, end_date))

2 个回答

1

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能会在使用某个功能时,发现它并没有按照预期工作。这种情况可能是因为设置不正确,或者是使用的方法不对。

在这种情况下,最好的办法就是仔细检查自己的代码,看看有没有哪里出错。也可以去网上查找相关的资料,看看有没有其他人遇到过类似的问题,并找到解决方案。

总之,遇到问题时不要着急,慢慢分析,通常都能找到解决的办法。

from datetime import date, timedelta

Post.objects.filter(postTime__range=(date.today(), date.today() - timedelta(days=14)))
3

在编程中,有时候我们需要处理一些数据,比如从一个地方获取信息,然后把它放到另一个地方。这就像是把书从一个书架搬到另一个书架一样。

有些时候,我们会遇到一些问题,比如数据的格式不对,或者我们想要的数据不在我们预期的地方。这就需要我们去检查和调整这些数据,确保它们能够正常工作。

在这个过程中,我们可能会用到一些工具和方法来帮助我们,比如编程语言中的函数和库。这些工具就像是搬家时用的箱子和推车,可以让我们的工作变得更轻松。

总之,处理数据就像是整理东西,需要耐心和细心,确保每一件事都在正确的位置。

start_date = end_date - datetime.timedelta(days=14)

撰写回答