代码之家  ›  专栏  ›  技术社区  ›  barciewicz

在Django ORM查询中转换日期时间对象[重复]

  •  1
  • barciewicz  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我想按年份筛选来自日期时间对象的查询集,但关键字不允许使用方法。因此,以下内容将引发错误:

    a = Activity.objects.filter(start_date.year=2018)
    

    还有别的办法吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   willeM_ Van Onsem    6 年前

    Django有一个 __year lookup [Django-doc] ,这样我们就可以用 双重的 下划线(下划线) __ ):

    Activity.objects.filter(start_date__year=2018)

    注意日期时间中的日期可以是“ 时区 敏感的 documentation 提到:

    什么时候? USE_TZ True ,在筛选之前,日期时间字段将转换为当前时区。

    这样就可以 功能性 影响,例如,如果一个时区的日期时间是在2018年1月1日00:01注册的,那么另一个时区的日期时间可能不在2018年。