我希望通过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 :(得分:201)
使用__range
运算符:
...filter(current_issue__isnull=True, created_at__range=(start_date, end_date))
答案 1 :(得分:19)
答案 2 :(得分:1)
两种方法
.filter(created_at__range=[from_date, to_date])
另一种方法
.filter(Q(created_at__gte=from_date)&Q(created_at__lte=to_date))
答案 3 :(得分:0)
如果您使用的是DateTimeField
,则使用日期进行过滤将不包括最后一天的项目。
您需要将值强制转换为日期:
...filter(created_at__date__range=(start_date, end_date))