用Django选择两个日期之间的数据

142 投票
4 回答
100096 浏览
提问于 2025-04-16 05:42

我想用Django来做一个查询,选择两个日期之间的数据。

我知道用原始SQL语句可以很简单地做到这一点,但我想知道怎么用Django的ORM来实现。

这是我想在查询中添加的,选择30天之间的数据:

start_date = datetime.datetime.now() + datetime.timedelta(-30)
context[self.varname] = self.model._default_manager.filter(
    current_issue__isnull=True
    ).live().order_by('-created_at')

4 个回答

6

如果你在使用一个 DateTimeField(日期时间字段),那么在用日期过滤的时候,最后一天的项目是不会被包括在内的。

你需要把这个值转换成日期格式:

...filter(created_at__date__range=(start_date, end_date))
26

__range是Django中用来查询数据的一种方式。

285

使用 __range 操作符:

...filter(current_issue__isnull=True, created_at__range=(start_date, end_date))

撰写回答