问题:使用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')
回答 0
使用__range
运算符:
...filter(current_issue__isnull=True, created_at__range=(start_date, end_date))
回答 1
回答 2
两种方法
.filter(created_at__range=[from_date, to_date])
另一种方法
.filter(Q(created_at__gte=from_date)&Q(created_at__lte=to_date))
- gte意味着大于等于
- 小于等于
回答 3
如果您使用DateTimeField
,则使用日期进行过滤将不包括最后一天的项目。
您需要将值转换为日期:
...filter(created_at__date__range=(start_date, end_date))