使用 Django 在两个日期之间进行选择

我期待做一个查询,选择与 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')
89321 次浏览

使用 __range操作符:

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

两种方法

.filter(created_at__range=[from_date, to_date])

另一种方法

.filter(Q(created_at__gte=from_date)&Q(created_at__lte=to_date))
  • Gte 的意思是大于等于
  • Lte 的意思是小于等于

如果您使用的是 DateTimeField,则使用日期进行过滤将不包括最后一天的项目。

您需要将值强制转换为 date:

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