首页 > 解决方案 > 在 Django ORM 查询中转换日期时间对象

问题描述

我想从日期时间对象中按年份过滤查询集,但不允许使用关键字的方法。因此,以下将引发错误:

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

有没有其他方法可以做到这一点?

标签: pythondjango

解决方案


Django 有一个__year查找 [Django-doc],所以我们可以用下划线 ( __) 来写:

Activity.objects.filter(start_date__year=2018)

请注意,日期时间中的日期可能是“时区敏感的”,文档提到:

USE_TZTrue,日期时间字段在过滤之前转换为当前时区。

因此,这可能会产生功能影响,例如,如果日期时间在一个时区的 2018 年 1 月 1 日 00:01 注册,那么对于另一个时区,这可能不在 2018 年。


推荐阅读