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

时间:2010-10-18 20:41:31

标签: python 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')

4 个答案:

答案 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))
  • gte意味着大于等于
  • lte小于等于

答案 3 :(得分:0)

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

您需要将值强制转换为日期:

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