django按日期时间过滤日期范围

use*_*745 11 python django datetime

我有一个带有"created_at"字段的模型,我有一个日期列表.所以,我想获得在日期范围内创建的所有模型.怎么样 ?

我知道我们可以使用以下方法轻松比较日期时间和日期:

queryset.filter(created_at__startswith=date)
Run Code Online (Sandbox Code Playgroud)

但是,我有一系列日期,那怎么样?
让我知道更多信息.

Aam*_*nan 18

您可以使用范围查找.只需查找最低和更高的日期,然后将其应用为:

queryset.filter(created_at__range=(start_date, end_date))
Run Code Online (Sandbox Code Playgroud)

  • 根据文档,end_date不包含在内.使用日期过滤DateTimeField将不包括最后一天的项目,因为边界被解释为"在给定日期0am".如果pub_date是DateTimeField,则上面的表达式将转换为此SQL: (2认同)

Sim*_*ser 9

您可以使用__gte(大于或等于)和__lte(小于或等于).例如:

queryset.filter(created_at__gte=datetime.date.today())
Run Code Online (Sandbox Code Playgroud)


Jam*_*esO 9

你可以使用范围,例如

first_date = datetime.date(2005, 1, 1)
last_date = datetime.date(2005, 3, 31)
queryset.filter(created_at__range=(first_date, last_date))
Run Code Online (Sandbox Code Playgroud)